博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
rabbitmq集成spring的xml配置和java代码
阅读量:4181 次
发布时间:2019-05-26

本文共 4396 字,大约阅读时间需要 14 分钟。

RabbitMQ官方支持以下五种队列类型。

队列名称 队列模型 适用
简单队列
工作队列
发布/订阅模式
路由模式
主题模式

 

使用依赖:

org.springframework.amqp
spring-rabbit
1.7.12.RELEASE

xml配置

config.properties配置:

#rabbitmq   rabbitmq.open-->Y/Nrabbitmq.open=Yrabbit.mq.host=172.16.20.121rabbit.mq.port=5672rabbit.mq.username=fslrabbit.mq.password=fslrabbit.mq.queue=queue.portal.default

java代码--mq接收者--RabbitMqReceiver.java

import java.util.Map;import com.fsl.lcp.mq.service.MqHandleService;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.amqp.core.Message;import org.springframework.amqp.core.MessageListener;/** * 〈rabbitmq的消费者〉. * * @author tanqian * @create 2019/1/2 */public class RabbitMqReceiver implements MessageListener {    private Logger log = LoggerFactory.getLogger(RabbitMqReceiver.class);    private Map
serviceBeanMap; @Override public void onMessage(Message message) { try { String str = new String(message.getBody(), "utf-8"); log.info(" receive body------->:" + str); //处理消息 String type = "test"; serviceBeanMap.get(type).handleMqData(message); } catch (Exception e) { e.printStackTrace(); log.error("error:" + e.getMessage()); } } public Map
getServiceBeanMap() { return serviceBeanMap; } public void setServiceBeanMap(Map
serviceBeanMap) { this.serviceBeanMap = serviceBeanMap; }}

java代码--mq消息处理者公共接口类--MqHandleService.java

import org.springframework.amqp.core.Message;/** * 处理mq消息的接口类. * * @author tanqian * @date 2019/01/11 */public interface MqHandleService {    /**     * 处理mq过来的数据.     */    void handleMqData(Message message);}

java代码--mq消息处理者实现类--MdmDataHandleServiceImpl.java

import com.fsl.lcp.mq.service.MqHandleService;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.amqp.core.Message;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.transaction.annotation.Transactional; /** * 处理mdm的mq消息的实现类. * * @author tanqian * @date 2019/01/07 */@Transactional(rollbackFor = Exception.class)public class MdmDataHandleServiceImpl implements MqHandleService {     private Logger log = LoggerFactory.getLogger(MdmDataHandleServiceImpl.class);     @Override    public void handleMqData(Message message) {        try {            //处理消息            String str = new String(message.getBody(), "utf-8");            log.info(" receive body------->:" + str);        } catch (Exception e) {            log.error("Exception------->:" + e.getMessage());        }    }}

java代码--mq消息发送者类--RabbitMqProducer.java,其中rabbitMqTemplate可以直接通过注解获取

import java.io.IOException;import com.hand.hap.core.components.ApplicationContextHelper;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.amqp.core.AmqpTemplate;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.ApplicationContext;/** * rabbitmq消息的生产者. * * @author tanqian * @date 2019/01/11 */public class RabbitMqProducer {    private Logger log = LoggerFactory.getLogger(RabbitMqProducer.class);    private ApplicationContext beanFactory;    @Value("${rabbitmq.open}")    private String rabbitmqOpen;    //    @Resource(name = "rabbitMqTemplate")    private AmqpTemplate rabbitMqTemplate;    public void sendMessage(String exchange, String routingKey, Object message) throws IOException {        //初始化bean        this.loadService();        log.info("to send message:{}", message);        rabbitMqTemplate.convertAndSend(exchange, routingKey, message);    }    /**     * 加载注入的bean.     */    private void loadService() {        if (null == beanFactory) {            beanFactory = ApplicationContextHelper.getApplicationContext();            if (null == beanFactory) {                return;            }        }        if (rabbitMqTemplate == null && rabbitmqOpen.equals("Y")) {            rabbitMqTemplate = (AmqpTemplate) beanFactory.getBean("rabbitMqTemplate");        }    }}

文档参考:

中文文档:

官方文档:

 

 

转载地址:http://crzoi.baihongyu.com/

你可能感兴趣的文章
[转]C语言printf
查看>>
Mysql中下划线问题
查看>>
Xcode 11 报错,提示libstdc++.6 缺失,解决方案
查看>>
vue项目打包后无法运行报错空白页面
查看>>
1136 . 欧拉函数
查看>>
面试题:强制类型转换
查看>>
Decorator模式
查看>>
Template模式
查看>>
Observer模式
查看>>
高性能服务器设计
查看>>
图文介绍openLDAP在windows上的安装配置
查看>>
Pentaho BI开源报表系统
查看>>
Pentaho 开发: 在eclipse中构建Pentaho BI Server工程
查看>>
android中SharedPreferences的简单例子
查看>>
android中使用TextView来显示某个网址的内容,使用<ScrollView>来生成下拉列表框
查看>>
andorid里关于wifi的分析
查看>>
Hibernate和IBatis对比
查看>>
Spring MVC 教程,快速入门,深入分析
查看>>
Android 的source (需安装 git repo)
查看>>
Ubuntu Navicat for MySQL安装以及破解方案
查看>>