文档章节

spring rabbitmq 配置文件简单介绍

巡山
 巡山
发布于 2016/07/12 19:13
字数 685
阅读 822
收藏 5
点赞 0
评论 0

        rabbitmq  一个java 开源的消息中间件,可以用来对应用之间的调用解耦,比如说,我要对登陆事件进行多种操作(记录日志、更新某些信息)。这些应用依赖登陆事件,但登陆本身并不对这些应用有依赖,可以通过消息中间件的方式进行解耦。

        由对登陆事件感兴趣的应用系统订阅消息,对消息处理,完成业务需求,同时对各系统解耦。

        rabbitmq 的介绍以及教程网上有,需要的可以百度,这里仅上两端带注释的代码

//生产者

//创建连接工厂
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("192.168.22.111");
factory.setUsername("guest");
factory.setPassword("guest");
//创建连接
Connection connection = factory.newConnection();
//创建channel 所有的消息操作基于channel
Channel channel = connection.createChannel(10);
//声明一个exchange topic 类型
channel.exchangeDeclare("crm.topic", "topic",true,false,false,null);
//声明一个队列
channel.queueDeclare("app.login.user", true, false, false, null);
//将queue 与exchange 绑定
channel.queueBind("app.login.user", "crm.topic", "app.login.user");
//发送消息,指定与exchange & routingKey 
channel.basicPublish("crm.topic", "app.login.user", null, "sxxxxxxxxxx".getBytes());
 
channel.close();
connection.close();

消费者

//创建连接工厂
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("192.168.22.111");
factory.setUsername("guest");
factory.setPassword("guest");
//创建连接
Connection connection = factory.newConnection();
Channel channel = connection.createChannel(10);

//声明一个队列
channel.queueDeclare("crmcommon.login.user", true, false, false, null);
//将queue 与exchange 绑定
channel.queueBind("crmcommon.login.user", "crm.topic", "crmcommon.login.user");
//消费
GetResponse r = channel.basicGet("crmcommon.login.user", true);
System.out.println(new String(r.getBody()));
channel.close();
connection.close(); 

以上是一个简单的生产者,一个简单的消费者。

下面是使用spring整合的配置

<!-- 登陆事件 -->
<!-- 连接工厂 bean -->
<rabbit:connection-factory id="connectionFactory" host="${amqp.rabbit.host}" 
 username="${amqp.rabbit.username}"
 password="${amqp.rabbit.password}" 
 />
 
 <!-- RabbitAdmin 用于管理exchange,queue -->
 <rabbit:admin id="rabbitAdmin" connection-factory="connectionFactory"/>
 
 <!-- 声明一个队列 -->
 <rabbit:queue name="crmcommon.login.user" id="loginQuene" ></rabbit:queue>
     
 <!-- 声明一个exchange -->
 <rabbit:topic-exchange  id="crmTopic" name="crm.topic" auto-delete="false" durable="true" auto-declare="true">
     <rabbit:bindings>
        <rabbit:binding pattern="crmcommon.login.#" queue="crmcommon.login.user"  ></rabbit:binding>
     </rabbit:bindings>
 </rabbit:topic-exchange>

 <!-- 消息转换器 pojo ==> json  提供了 JsonMessageConverter SimpleMessageConverter 
     Jackson2JsonMessageConverter SerializerMessageConverter 这几种转换器 -->
     
 <bean id="messageConverter" class="org.springframework.amqp.support.converter.JsonMessageConverter" />
 
 <!-- 操作的模板,和jdbc 一样spring 提供了一个封装的模板类 -->
 <rabbit:template id="rabbitTamplate" exchange="crm.topic" routing-key="crmcommon.login.user"
 connection-factory="connectionFactory"
 message-converter="messageConverter"></rabbit:template> 
 
  
 <!--异步执行线程池,对jdk 线程池的封装,暴露部分参数 -->
 <bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
      <property name="corePoolSize" value="2"></property>
      <property name="maxPoolSize" value="5"></property>
 </bean> 
     
 
 <!-- 消费者 需要实现 ChannelAwareMessageListener 或 MessageListener -->
 <bean id="listener" class="com.xx.xx.xx.rabbit.LoginListener" />
 
 <!-- listener 容器 可以绑定多个消费者,一个消费者可以绑定多个queue  -->
 <rabbit:listener-container connection-factory="connectionFactory"  acknowledge="manual" message-converter="messageConverter"  task-executor="taskExecutor" >
 <rabbit:listener ref="listener" queues="loginQuene"/>
 </rabbit:listener-container>

可以看到spring 配置也是要配置上面代码的基本元素,spring 同时提供了一下封装类,对消息的转换,操作模板等。 

© 著作权归作者所有

共有 人打赏支持
巡山
粉丝 2
博文 20
码字总数 12425
作品 0
深圳
RabbitMQ学习以及与Spring的集成(三)

本文介绍RabbitMQ与Spring的简单集成以及消息的发送和接收。 在RabbitMQ的Spring配置文件中,首先需要增加命名空间。 xmlns:rabbit="http://www.springframework.org/schema/rabbit" 其次是模...

onedotdot
06/18
0
0
【Spring Cloud】分布式必学springcloud(十一)——消息驱动 SpringCloud Stream

一、前言 在前面的博客中,基本上已经把springcloud系列的大部分都介绍过了。如果有太明白的小白,还是建议从小编的第一篇博客进行学习。 在这篇博客中,小白向大家介绍一个消息事件驱动框架...

kisscatforever
04/26
0
0
阿里云Kubernetes SpringCloud 实践进行时(2): 分布式配置管理

简介 为了更好地支撑日益增长的庞大业务量,我们常常需要把服务进行整合、拆分,使我们的服务不仅能通过集群部署抵挡流量的冲击,又能根据业务在其上进行灵活的扩展。随着分布式的普及、服务...

osswangxining
05/25
0
0
通过实例理解 RabbitMQ 的基本概念

先说下自己开发的实例。 最近在使用 Spring Cloud Config 做分布式配置中心(基于 SVN/Git),当所有服务启动后,SVN/Git 中的配置文件更改后,客户端服务读取的还是旧的配置,并不能实时读取...

xumaojun
05/06
0
0
【Spring Cloud】分布式必学springcloud(十)——消息总线 SpringCloud Bus

一、前言 在上篇博客中,向大家介绍了Spring Cloud Config ,分布式配置中心。它分成了服务端和客户端,服务端提供配置,客户端读取配置,既可以使用svn,也可以使用git存放配置文件,集中管...

kisscatforever
04/25
0
0
介绍Spring Cloud Stream与RabbitMQ集成

Spring Cloud Stream是一个建立在Spring Boot和Spring Integration之上的框架,有助于创建事件驱动或消息驱动的微服务。在本文中,我们将通过一些简单的例子来介绍Spring Cloud Stream的概念...

RaiseHead
05/13
0
0
SpringCloud(第 037 篇)通过bus/refresh半自动刷新ConfigClient配置

SpringCloud(第 037 篇)通过bus/refresh半自动刷新ConfigClient配置 - 一、大致介绍 二、实现步骤 2.1 添加 maven 引用包 2.2 添加应用配置文件(springms-config-client-refresh-bus/src/...

HMILYYLIMH
2017/10/18
0
0
Spring Boot与RabbitMQ结合实现延迟队列的示例

背景 何为延迟队列? 顾名思义,延迟队列就是进入该队列的消息会被延迟消费的队列。而一般的队列,消息一旦入队了之后就会被消费者马上消费。 场景一:在订单系统中,一个用户下单之后通常有...

xiaomin0322
05/11
0
0
Spring Cloud Stream应用与自定义RocketMQ Binder:编程模型

前言: 本文作者张天,节选自笔者与其合著的《Spring Cloud微服务架构进阶》,即将在八月出版问世。本文将其中Spring Cloud Stream应用与自定义Rocketmq Binder的内容抽取出来,主要介绍Spr...

aoho
06/23
0
0
Spring Boot整合RabbitMQ实例

什么是消息? 消息是一个或者多个实体之间沟通的一种方式并且无处不在。 自从计算机发明以来,计算机以多种多样的方式发送消息,消息定义了软硬件或者应用程序之间的沟通方式。消息总是有一个...

英雄有梦没死就别停
06/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

spring-@RequestBody

@RequestMapping("/login")    public void login(@RequestBody String userName,@RequestBody String pwd){      System.out.println(userName+" :"+pwd);    }    ......

说回答
7分钟前
0
0
Redis安装

大家可以通过该链接获取安装详情(这是一个Word文档,支持下载): http://note.youdao.com/noteshare?id=7a327ed6c58fb2037ba537e58ecf7510&sub=480DB8EF349747C3983B73AE94D45BB1 其他参考...

一梦心草
7分钟前
0
0
MySQL按天,按周,按月,按时间段统计【转载】

https://blog.csdn.net/qq_28056641/article/details/78306870 select DATE_FORMAT(create_time,'%Y%m%d') days,count(caseid) count from tc_case group by days; select DATE_FORMAT(creat......

李道福
9分钟前
0
0
浅谈parallelStream

parallelStream是什么,它是一个集合的并发处理流.其作用是把一个集合中的数据分片,进行一个多线程的处理,增快运行速度. 比如说这样一段代码 private Set<SysRole> sysRoles;private Set<St...

算法之名
10分钟前
3
0
器者,道之所载

形而上者谓之道,形而下者谓之器,化而裁之谓之变;推而行之谓之通,举而措之天下之民,谓之事业。—— 《道德经》

了凡川
12分钟前
0
0
C#命名规范中文版/C#编码规范中文版

最新文档地址https://github.com/hiramtan/CSharpNamingGuidelines_Chinese C#命名规范中文版/C#编码规范中文版 示例 /*****************************************************************......

海贝Hibey
13分钟前
0
0
刚从eclipse转到Intellij IDEA,分享一些配置经验

刚从eclipse转到Intellij IDEA,分享一些配置经验,IntelliJ IDEA作为最好的Java开发工具,在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、 创新的GUI设计等...

舒文joven
15分钟前
1
0
lombok 引入后,测试类始终找不到get,set方法。

开发环境为idea,jdk1.7,maven3.5. 网上直接搜出来的方法有: 1、在setting里安装lombok的plugins; 2、如下图,勾选enable annocation processing选项 3、升级maven plugins插件 我尝试了以...

Kidult
21分钟前
0
0
Duang,HUAWEI DevEco IDE全面升级啦

想感受全新UI带来的视觉及交互体验、 HiKey970开发板调测、 HiAI API推荐和收藏、 深度AI模型分析等新功能, 体验高清晰度和流畅度的远程AI真机调测吗? 全新的UI设计 采用最优秀的视觉及交互...

华为终端开放实验室
29分钟前
1
0
阻止事件冒泡,阻止默认事件

1.event.stopPropagation()方法 这是阻止事件的冒泡方法,不让事件向documen上蔓延,但是默认事件任然会执行,当你掉用这个方法的时候,如果点击一个连接,这个连接仍然会被打开, 2.event....

闫亚亚
31分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部