创建rabbitTemplate并发送消息

mac2025-03-21  11

//是一个运行器,注解了@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)