博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring集成activeMq
阅读量:5172 次
发布时间:2019-06-13

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

  • 前言

    本篇内容主要记录spring集成消息中间件MQ的,分队列模式queue和主题模式topic两种模式,我使用的是activeMq。网上现在主流的是rabbitMq,功能更加强大,但rabbitMq用的是Erlang语言写的,需要安装Erlang环境。如果是要用到大数据相关的,可以使用kafka,我这为了简便就用了activeMq。
  • 启动activeMq

    下载下activeMq之后解压缩,在bin目录下有32和64的,根据电脑位数运行,我的是64位的,运行exe文件
  • pom.xml文件引入依赖

    org.apache.activemq
    activemq-all
    5.9.0
    org.apache.activemq
    activemq-pool
    5.9.0
    org.springframework
    spring-jms
    4.0.0.RELEASE

     

  • 创建mq的xml文件application-mq.xml

    mq的连接地址根据实际情况设定,用户名密码根据实际情况填写,activeMq默认的是admin/admin,假如activemq配置了连接认证,则需要用配置的认证用户登录,具体用法是在activeMq的conf文件夹下activemq.xml里添加插件

  • service发送消息

    package com.djkj.demo.service.serviceImpl;import com.djkj.demo.service.AmqSenderService;import org.apache.log4j.Logger;import org.springframework.jms.core.JmsTemplate;import org.springframework.jms.core.MessageCreator;import org.springframework.stereotype.Service;import javax.annotation.Resource;import javax.jms.Destination;import javax.jms.JMSException;import javax.jms.Message;import javax.jms.Session;@Service("AmqSenderService")public class AmqSenderServiceImpl implements AmqSenderService {    private static final Logger logger = Logger.getLogger(AmqSenderServiceImpl.class);    @Resource    private JmsTemplate jmsTemplate;    @Resource(name = "destinationQueue")    private Destination destination;    @Override    public void sendMsg(String msg) {        logger.info("----发送队列信息开始----");        try {            jmsTemplate.send(destination, new MessageCreator() {                @Override                public Message createMessage(Session session) throws JMSException {                    return session.createTextMessage(msg);                }            });        }catch (Exception e){            e.printStackTrace();            logger.error("发送队列失败!");        }    }}

    controller调用service方法发送消息

  • 接收消息

    我是把消息生产者和消费者放在一起的,实际开发中消费者和生产者绝大多数情况是分开在不同系统的。消费者主要通过监听来实现接收消息
    上面的mq的xml文件最底下配置了一个我的消息监听器MyMessageListener,代码如下
    package com.djkj.demo.common;import javax.jms.JMSException;import javax.jms.Message;import javax.jms.MessageListener;import javax.jms.TextMessage;public class MyMessageListener implements MessageListener {    @Override    public void onMessage(Message message) {        if (message instanceof TextMessage) {            try {                TextMessage txtMsg = (TextMessage) message;                String msg = txtMsg.getText();                WebSocketUtil.sendMessageAll(msg);            } catch (JMSException e) {                throw new RuntimeException(e);            }        } else {            throw new IllegalArgumentException("Message must be of type TextMessage");        }    }}

    接收到消息后通过websocket发送到前台页面实现实时的效果的,大家根据自己的需求来写。以后再写关于websocket的集成。

 

转载于:https://www.cnblogs.com/zhouyun-yx/p/10413511.html

你可能感兴趣的文章
lr_start_transaction/lr_end_transaction事物组合
查看>>
CodeIgniter学习笔记(四)——CI超级对象中的load装载器
查看>>
.NET CLR基本术语
查看>>
ubuntu的home目录下,Desktop等目录消失不见
查看>>
建立,查询二叉树 hdu 5444
查看>>
[Spring框架]Spring 事务管理基础入门总结.
查看>>
2017.3.24上午
查看>>
Python-常用模块及简单的案列
查看>>
LeetCode 159. Longest Substring with At Most Two Distinct Characters
查看>>
基本算法概论
查看>>
jquery动态移除/增加onclick属性详解
查看>>
JavaScript---Promise
查看>>
暖暖的感动
查看>>
Java中的日期和时间
查看>>
Django基于admin的stark组件创建(一)
查看>>
C. Tanya and Toys_模拟
查看>>
springboot jar包运行中获取资源文件
查看>>
基于FPGA实现的高速串行交换模块实现方法研究
查看>>
Java Scala获取所有注解的类信息
查看>>
delphi ,安装插件
查看>>