RabbitTemplate,消息模板
发送消息的关键类,该类提供了丰富的发送消息的方法,包括可靠性投递的方法,回调监听消息接口ConfirmCallback
,返回值确认接口ReturnCallback
等。同样我们需要进行注入到Spring容器中,然后直接使用。
RabbitConfig
package com.wyg.rabbitmq.springamqp;
import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitAdmin;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* RabbitAdmin
*
* @author wyg0405@gmail.com
* @date 2019-11-25 15:11
* @since JDK1.8
* @version V1.0
*/
@Configuration
public class RabbitConfig {
@Bean
public ConnectionFactory connectionFactory() {
CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory();
cachingConnectionFactory.setAddresses("localhost:5672");
cachingConnectionFactory.setUsername("guest");
cachingConnectionFactory.setPassword("guest");
cachingConnectionFactory.setVirtualHost("/");
return cachingConnectionFactory;
}
/**
* RabbitTemplate注入
*
* @param connectionFactory
* @return
* @throws @author
* wyg0405@gmail.com
* @date 2019/11/25 16:37
*/
public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) {
RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
return rabbitTemplate;
}
}
RabbitConfigTest
package com.wyg.rabbitmq.springamqp;
import java.io.UnsupportedEncodingException;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.amqp.core.*;
import org.springframework.amqp.rabbit.core.RabbitAdmin;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class RabbitConfigTest {
@Autowired
private RabbitTemplate rabbitTemplate;
/**
* 测试RabbitTemplate,发送消息
*
* @param null
* @return
* @throws @author
* wyg0405@gmail.com
* @date 2019/11/25 16:42
*/
@Test
public void testRabbitTemplateSendMsg() throws UnsupportedEncodingException {
String exchange = "testRabbitAdmin.exchange.topic";
String routingKey = "topicKey.abc";
MessageProperties messageProperties = new MessageProperties();
messageProperties.getHeaders().put("type", "小鸡");
messageProperties.getHeaders().put("name", "jim");
String content = "测试消息111";
Message message = new Message(content.getBytes("UTF-8"), messageProperties);
rabbitTemplate.convertAndSend(exchange, routingKey, message);
}
}
运行结果