前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot之Jms

SpringBoot之Jms

作者头像
王念博客
发布2019-07-24 10:35:32
1.3K0
发布2019-07-24 10:35:32
举报
文章被收录于专栏:王念博客王念博客

前言:JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。

安装activemq的教程百度

1.导入依赖相关的jar包

1.4.0提供了单独的spring-boot-starter-activemq

代码语言:javascript
复制
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-activemq</artifactId>
</dependency>

1.4.0之前需要分别导入两个依赖

代码语言:javascript
复制
<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jms</artifactId>
</dependency>
<dependency>
      <groupId>org.apache.activemq</groupId>
      <artifactId>activemq-broker</artifactId>
</dependency>

2.配置MQ配置连接

代码语言:javascript
复制
spring.activemq.in-memory=true           //使用内存
spring.activemq.pool.enabled=false       //不需要开启连接池
#JMS config 
spring.activemq.broker-url=tcp:// :61616 //mq单独服务地址
spring.activemq.user=                    //用户名
spring.activemq.password=                //密码

注意:如果没有设置mq的单独服务地址默认会将在项目启动时启动一个单独的MQ服务。这个时候需要保证该服务不会重启,如果正在异步通信中关闭MQ会造成所有队列中的消息丢失。

3.开启JMS并配置Queue

代码语言:javascript
复制
   @Bean
    public Queue queue() {
        return new ActiveMQQueue("sample.queue");//队列的名字
    }
代码语言:javascript
复制
在主程序启动 @EnableJms

4.创建消息提供者

代码语言:javascript
复制
package com.wangnian;

import javax.jms.Queue;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.stereotype.Component;

@Component
public class Producer implements CommandLineRunner {

	@Autowired
	private JmsMessagingTemplate jmsMessagingTemplate;

	@Autowired
	private Queue queue;

	@Override
	public void run(String... args) throws Exception {
		send("发送消息");
	}

	public void send(String msg) {
		this.jmsMessagingTemplate.convertAndSend(this.queue, msg);
	}

}

demo启动项目执行run方法发送消息

5.创建消息消费者

代码语言:javascript
复制
package com.wangnian;

import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;

@Component
public class Consumer {

    @JmsListener(destination = "sample.queue")//这就是配置的bean时候的队列名字
    public void receiveQueue(String text) {
        System.out.println(text);
    }

6.测试

2016-09-04 12:20:01.041 INFO 3436 --- [ main] o.s.c.support.DefaultLifecycleProcessor : Starting beans in phase 2147483647 发送消息 2016-09-04 12:20:01.728 INFO 3436 --- [ main] com.wangnian.SendJmsApplication : Started SendJmsApplication in 1.969 seconds (JVM running for 2.309)

7.配置activemq

activemq有一个web网页控台,如果公网访问的话需要设置一下密码。

修改web控台密码

\conf\jetty-realm.properties

代码语言:javascript
复制
# Defines users that can access the web (console, demo, etc.)
# username: password [,rolename ...]
admin: newadmin, admin 用户名-密码-权限
user: user, user

修改连接密码

\conf\activemq.xml

在broker标签下 systemUsage标签之前加入plugins

代码语言:javascript
复制
 <!--启动连接密码-->
         <plugins>  
            <simpleAuthenticationPlugin>  
               <users>  
                   <authenticationUser username="${activemq.username}" password="${activemq.password}" groups="users,admins"/>  
                </users>  
            </simpleAuthenticationPlugin>  
         </plugins>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.导入依赖相关的jar包
  • 2.配置MQ配置连接
  • 3.开启JMS并配置Queue
  • 4.创建消息提供者
  • 5.创建消息消费者
  • 6.测试
  • 7.配置activemq
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档