springAmq中template动态操作message内容

文章介绍了如何在SpringAmq中不仅发送基本消息,而且更深入地操作消息头帧,例如在消息头中插入数据。通过`Message`对象,可以在发送时设置丰富的内容,而不仅仅是字符串。同时指出,无论使用`template.send()`还是`template.convertAndSend()`,消费者都会接收到`Message`对象。示例代码展示了发送和接收带有头帧数据的消息的过程。
摘要由CSDN通过智能技术生成

springAmq中动态设置消息的内容

在学习springAmq时网上有很多将发消息的方法说的都很浅显

大部分将发消息的方法都是下面这种

		amqpAdmin.declareExchange(new DirectExchange("testExchange"));
        amqpAdmin.declareQueue(new Queue("testQueue", true));
        amqpAdmin.declareBinding(new Binding("testQueue", Binding.DestinationType.QUEUE, "testExchange", "testQueue", new HashMap<>()));
		// 简单的发送消息
        template.convertAndSend("testQueue", "我是发送的消息");

像这种简单的使用rabbitTemplate.convertAndSend发送消息,然后通过接收消息的时候也只是简单的接收到发送的消息

@RabbitListener(queues = "testQueue")
public void listen(String str){
     System.out.println(str);
 }

但是这样就很容易让人忽略掉对消息的本体的操作

下面发送的message消息,可以更加丰富的设置和使用消息帧的数学,就比如这里向消息头帧中插入数据

@Bean
    public ApplicationRunner runner(){
        amqpAdmin.declareExchange(new DirectExchange("testExchange"));
        amqpAdmin.declareQueue(new Queue("testQueue", true));
        amqpAdmin.declareBinding(new Binding("testQueue", Binding.DestinationType.QUEUE, "testExchange", "testQueue", new HashMap<>()));

        Message message = new Message("123".getBytes());
        // 可以更加丰富的设置和使用消息帧的数学,就比如这里向消息头帧中插入数据
        message.getMessageProperties().getHeaders().put("key", "123456");
        template.send("testQueue", message);

        return args -> {};
    }

这里是接收部分可以看到其实接收的时候rabbitmq会将Message 和你发送得消息都穿给你注意:无论是使用send(Queue, Message )的方式发送还是使用template.convertAndSend(Queue, object)的方式发送,rabbitmq都会将Message 传给消费者,网上很多文章都没有写Message 这个参数

 @RabbitListener(queues = "testQueue")
 public void listen(Message msg, String str){
     System.out.println(msg.getMessageProperties().getHeaders());
     System.out.println(str);
 }

下面是运行的结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值