专栏首页凯哥JavarabbitMQ高级整合应用第四篇 消息监听适配器
原创

rabbitMQ高级整合应用第四篇 消息监听适配器

RabbitMQ学习系列第二十二篇 高级整合 第四篇MessageListenerAdapter 本文来源:凯哥Java(kaigejava).www.kaigejava.com

MessageListenerAdaoter:即消息监听适配器。

代码演示:

在config类中修改:

在SimpleMessageListenerContainer bean中(上一节课代码演示)修改如下:

/** 使用适配器模式 **/

MessageListenerAdapter adapter = new MessageListenerAdapter(new MessageDelegate());

messageListenerContainer.setMessageListener(adapter);

在来看看

MessageDelegate类:

运行测试类:

@Test

public void setRabbitTemplateTest() throws  Exception{

//创建消息

MessageProperties messageProperties = new MessageProperties();

   messageProperties.getHeaders().put("desc","这里可以添加一些描述信息");

   messageProperties.getHeaders().put("mytype","这里是自定义的");

   String msessage = "this spring msg";

   Message message = new Message(msessage.getBytes(),messageProperties);

//使用模板

rabbitTemplate.convertAndSend("topic001", "spring.amqp", message, new MessagePostProcessor() {

@Override

public Message postProcessMessage(Message message) throws AmqpException {

         System.out.println("------添加额外的信息---------");

         message.getMessageProperties().getHeaders().put("desc","这里可以添加一些描述信息。这是修改后的");

         message.getMessageProperties().getHeaders().put("attr","哎呦,这是额外的");

return message;

      }

   });

}

运行效果:

说明我们使用适配器模式成功。

说明:

在MessageDelegate类中

handleMessage方法名称和参数不能修改。方法体我们可以自定义的。

为什么handlerMessage方法不能修改。我们来看看源码:

在源码中,有个DEFAULT_LISTENER_METHOD的静态变量。其值就是handleMessage了。这下知道为什么不能去掉了吧。

如果想要指定自己写的名字。其实也是可以的。

在config中listener在setadapter的时候可以指定默认的方法名称。

如下:

修改MessageDelegate:

运行测试:

我们在控制台可以看到,调用了我们自定义的方法了。

说明,修改默认调用方法成功。

修改消息内容,不使用OBJ数组。使用字符串。

修改MessageDelegate类如下:

修改config.添加messageConverter:

MyMessageConveter类:

执行测试方法:

在控制台上正确的打印出来。说明我们修改消息转换类成功。

本文总结:

下节预告:

我们继续讲解自定义消息转换器

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 使用java awt最简单的截屏程序

    QQ的截屏大家都熟悉了。有没有想过自己写个截屏小工具呢?  使用到java的awt做个最简单的截屏小程序。  项目截图: 

    凯哥Java
  • eclipse启动错误An internal error occurred

    在导出其他maven项目时候,maven下载jar还没下载完成,就关闭eclipse。重启后,一直提示:

    凯哥Java
  • Microsoft SQL Server 2012 简体中文64位版

    Microsoft SQL Server 2012是由微软推出的新一代数据库平台,最新版的SQL Server 2012在功能对云平台进行了支持,可以使开发者更...

    凯哥Java
  • 搭建私有PTS性能测试服务(六)

    前几篇我们介绍了怎么对nGrinder改造成阿里云PTS类似的样子,也给大家举例演示了怎么利用nGrinder测试接口性能,那测试结果出来后,就需要对测试结果进...

    归根落叶
  • SQL注入的几种类型和原理

    在上一章节中,介绍了SQL注入的原理以及注入过程中的一些函数,但是具体的如何注入,常见的注入类型,没有进行介绍,这一章节我想对常见的注入类型进行一个了解,能够自...

    天钧
  • 游戏服务器和Web服务器的区别

    用Go语言写游戏服务器也有一个多月了,也能够明显的感受到两者的区别。这篇文章就是想具体的聊聊其中的区别。当然,在了解区别之间,我们先简单的了解一下Go语言本身。

    tengxunyun8点com活动整理
  • 游戏服务器和Web服务器的区别

    用Go语言写游戏服务器也有一个多月了,也能够明显的感受到两者的区别。这篇文章就是想具体的聊聊其中的区别。当然,在了解区别之间,我们先简单的了解一下Go语言本身。

    SH的全栈笔记
  • 【Mockplus教程】添加

    1. 拖动添加 用鼠标从左侧组件面板中拖动一个组件到工作区,即可完成组件的添加。 2. 搜索添加 在上方组件搜索框中输入想要添加的组件名字,在自动弹出来...

    奔跑的小鹿
  • HanSON是个什么鬼

    做Web开发的应该都或多或少知道JSON这东东。我们经常会用JSON文件来做为配置文件,如package.json,bower.json。但JSON有不少让人不...

    Joel
  • 前端学习笔记之css清除浮动float的七种常用方法总结和兼容性处理

    浮动的定义:使元素脱离文档流,按照指定方向发生移动,遇到父级边界或者相邻的浮动元素停了下来。

    Jetpropelledsnake21

扫码关注云+社区

领取腾讯云代金券