专栏首页王念博客SpringBoot之Jms

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>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SpringBoot之Jpa 多数据源

    前言:JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中,...

    王念博客
  • SpringBoot之Https

    前言:Springboot因为是内置一个tomcat,在需要安全性的情况下需要配置ssl访问。

    王念博客
  • SpringBoot之redis

    redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(...

    王念博客
  • spring service层单元测试

    service层测试较简单,目前大多数测试主要是针对public方法进行的。依据测试方法划分,可以分为两种:基于mock的隔离测试和基于dbunit的普通测试。...

    YGingko
  • Spring Boot Web 自定义注解篇(注解很简单很好用)

    自从spring 4.0 开放以后,可以添加很多新特性的注解了。使用系统定义好的注解可以大大方便的提高开发的效率。

    爱撸猫的杰
  • FastDFS的使用

    FastDFS安装(http://blog.csdn.net/LoveCarpenter/article/details/75913329)

    用户5927264
  • springboot集成ActiveMQ

    麦克劳林
  • activemq的高可用(zookeeper+leveldb)主从集群

    ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现

    互扯程序
  • 递归树的平面化实验

    用户1148526
  • SpringBoot 整合异步调用方法

    1. 在 SpringBoot 主类上使用 @EnableAsync 注解,开启异步调用功能

    北漂的我

扫码关注云+社区

领取腾讯云代金券