创建rabbitTemplate并发送消息
//是一个运行器,注解了@RunWith就可以直接使用spring容器,直接使用@Test注解,不用启动spring容器//SpringRunner 继承了SpringJUnit4ClassRunner,没有扩展任何功能;使用前者,名字简短而已。@RunWith(SpringRunner.class)//是SpringBoot自1.4.0版本开始引入的一个用于测试的注解//SpringBo...
//是一个运行器,注解了@RunWith就可以直接使用spring容器,直接使用@Test注解,不用启动spring容器
//SpringRunner 继承了SpringJUnit4ClassRunner,没有扩展任何功能;使用前者,名字简短而已。
@RunWith(SpringRunner.class)
//是SpringBoot自1.4.0版本开始引入的一个用于测试的注解
//SpringBootTest.WebEnvironment.RANDOM_PORT经常和测试类中@LocalServerPort一起在注入属性时使用。会随机生成一个端口号
@SpringBootTest(classes = WorkstackApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class RabbitMqTests {
private static final Logger logger = LoggerFactory.getLogger(RabbitMqTests.class);
@Autowired
private RabbitTemplate rabbitTemplate;
@Test
public void testSendMessage() {
logger.info("手动创建rabbitTemplate");
/**
CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
connectionFactory.setAddresses("127.0.0.1:5672");
connectionFactory.setUsername("admin");
connectionFactory.setPassword("adminadmin");
connectionFactory.setVirtualHost("/");
// 如果需要confirm则设置为true
connectionFactory.setPublisherConfirms(true);
RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
//rabbitTemplate.setConfirmCallback(rabbitConfirmCallback);
rabbitTemplate.setMandatory(true);
//rabbitTemplate.setReturnCallback(rabbitReturnCallback);
//使用单独的发送连接,避免生产者由于各种原因阻塞而导致消费者同样阻塞
rabbitTemplate.setUsePublisherConnection(true);
*/
logger.info("消息发送:");
// rabbitTemplate.setChannelTransacted(false);
// rabbitTemplate.setChannelTransacted(true);
// rabbitTemplate.send("", );
rabbitTemplate.setConfirmCallback((correlationData, ack, cause) -> {
System.out.println(" ID:" + correlationData);
if (ack) {//true表示消息发送成功
logger.info("消息发送成功");
} else {
logger.info("消息发送失败:" + cause);
}
});
Map<String, Object> map = Maps.newHashMap();
map.put("key1","value1");
map.put("key2","value2");
rabbitTemplate.convertAndSend(
null,
"aa.message", "测试消息", msg -> {
MessageProperties properties = msg.getMessageProperties();
properties.setDeliveryMode(MessageDeliveryMode.PERSISTENT);
Map<String, Object> headers = msg.getMessageProperties().getHeaders();
headers.putAll(map);
return msg;
}, new CorrelationData(UUID.randomUUID().toString())
);
}
}
更多推荐
所有评论(0)