SpringBoot之Jms

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

安装activemq的教程百度

1.导入依赖相关的jar包

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

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-activemq</artifactId>
</dependency>

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

<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jms</artifactId>
</dependency>
<dependency>
      <groupId>org.apache.activemq</groupId>
      <artifactId>activemq-broker</artifactId>
</dependency>

2.配置MQ配置连接

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

   @Bean
    public Queue queue() {
        return new ActiveMQQueue("sample.queue");//队列的名字
    }
在主程序启动 @EnableJms

4.创建消息提供者

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.创建消息消费者

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

# 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

 <!--启动连接密码-->
         <plugins>  
            <simpleAuthenticationPlugin>  
               <users>  
                   <authenticationUser username="${activemq.username}" password="${activemq.password}" groups="users,admins"/>  
                </users>  
            </simpleAuthenticationPlugin>  
         </plugins>

博客地址:http://my.oschina.net/wangnian

转载于:https://my.oschina.net/wangnian/blog/742104

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值