java的jms在那些包中_JMS 在 SpringBoot 中的使用

本文介绍了如何在 SpringBoot 中使用 JMS 与 ActiveMQ 集成,包括连接创建、消息发送与接收。通过示例展示了 JmsTemplate 的使用、消息监听器的配置以及点对点和发布订阅两种模式的应用。
摘要由CSDN通过智能技术生成

JMS 在 SpringBoot 中的使用

本文所有服务均采用docker容器化方式部署

当前环境

Mac OS 10.11.x

docker 1.12.1

JDK 1.8

SpringBoot 1.5

前言

基于之前一篇“一个故事告诉你什么是消息队列”,了解了消息队列的使用场景以及相关的特性。本文主要讲述消息服务在 JAVA 中的使用。

市面上的有关消息队列的技术选型非常多,如果我们的代码框架要支持不同的消息实现,在保证框架具有较高扩展性的前提下,我们势必要进行一定的封装。

在 JAVA 中,大可不必如此。因为 JAVA 已经制定了一套标准的 JMS 规范。该规范定义了一套通用的接口和相关语义,提供了诸如持久、验证和事务的消息服务,其最主要的目的是允许Java应用程序访问现有的消息中间件。就和 JDBC 一样。

基本概念

在介绍具体的使用之前,先简单介绍一下 JMS 的一些基本知识。这里我打算分为 3 部分来介绍,即 消息队列(MQ)的连接、消息发送与消息接收。

这里我们的技术选型是 SpringBoot、JMS、ActiveMQ

为了更好的理解 JMS,这里没有使用 SpringBoot 零配置来搭建项目

MQ 的连接

使用 MQ 的第一步一定是先连接 MQ。因为这里使用的是 JMS 规范,对于任何遵守 JMS 规范的 MQ 来说,都会实现相应的ConnectionFactory接口,因此我们只需要创建一个ConnectionFactory工厂类,由它来实现 MQ 的连接,以及封装一系列特性的 MQ 参数。

例子:这里我们以 ActiveMQ 为例,

maven 依赖:

org.springframework.boot

spring-boot-starter-parent

1.5.3.RELEASE

org.springframework.boot

spring-boot-starter-activemq

创建 ActiveMQ 连接工厂:

@Bean

public ConnectionFactory connectionFactory(){

ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory();

connectionFactory.setBrokerURL(ActiveMQ_URL);

connectionFactory.setUserName(ActiveMQ_USER);

connectionFactory.setPassword(ActiveMQ_PASSWORD);

return connectionFactory;

}

消息发送

关于消息的发送,是通过 JMS 核心包中的JmsTemplate类来实现的,它简化了 JMS 的使用,因为在发送或同步接收消息时它帮我们处理了资源的创建和释放。从它的作用也不难推测出,它需要引用我们上面创建的连接工厂,具体代码如下:

@Bean

public JmsTemplate jmsQueueTemplate(){

return new JmsTemplate(connectionFactory());

}

JmsTemplate创建完成后,我们就可以调用它的方法来发送消息了。这里有两个概念需要注意:

消息会发送到哪里?-> 即需要指定发送队列的目的地(Destination),是可以在 JNDI 中进行存储和提取的 JMS 管理对象。

发送的消息体具体是什么?-> 实现了javax.jms.Message的对象,类似于 JAVA RMI 的 Remote 对象。

代码示例:

@Autowired

private JmsTemplate jmsQueueTemplate;

/**

* 发送原始消息 Message

*/

public void send(){

jmsQueueTemplate.send("queue1", new MessageCreator() {

@Override

public Message createMessage(Session session) throws JMSException {

return session.createTextMessage("我是原始消息");

}

});

}

优化:当然,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值