创建rabbitTemplate并发送消息

//是一个运行器,注解了@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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值