spring-boot集成activeMQ(二)-使用ActiveMQ Server

在上一篇文章中,介绍了使用spring-boot默认的activemq,也就是不须要链接activemq-server的写法,若是没看过的同窗,能够点击下面的链接查看html

http://www.javashuo.com/article/p-vnuptsfa-kk.htmljava

下面,咱们来介绍下,怎么使用本地起来avtivemq-server的配置,以及代码linux

 

首先,咱们去 http://activemq.apache.org/download.html 下载activemq,我下载的是5.8linux的版本,各位能够根据本身的jdk版本以及运行环境进行下载.web

个人环境是: jdk版本号为1.8,springboot版本号为1.4.1spring

 

运行起来activemq后,咱们输入 http://localhost:8161 进入activemq的管理页面:apache

    点击 Manage ActiveMQ broker 会让你输入 帐号密码,默认的帐号密码都是 adminspringboot

    进去后,会看到以下信息session

 

而后点击 queues 查看队列:app

    

咱们能够发现,队列内目前暂时什么都没有,就等咱们往里面添加tcp

 

------------------------------------分割线-------------------------------------

 

咱们须要先引入pom依赖,pom配置以下:

<parent>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-parent</artifactId>
   <version>1.4.1.RELEASE</version>
   <relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
   <java.version>1.8</java.version>
</properties>

<dependencies>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
   </dependency>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
   </dependency>
    <!--引入对activemq的支持-->
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-activemq</artifactId>
   </dependency>
</dependencies>

 

 

jar包已经引入,接下来,就是写测试代码,咱们须要一个消息对象,一个消息监听者(也就是消费者),一个消息发送者(也就是生产者).

 

消息对象代码:

/**
 * 项目名:SpringBootDemo
 * 建立人:贺小五
 * 建立时间:16/11/27 下午6:21
 * 类名:MessageObject
 * 类描述:
 *        消息对象
 */
public class MessageObject implements MessageCreator{//实现MessageCreator的createMessage方法,建立消息

   @Override
   public Message createMessage(Session session) throws JMSException {
      return session.createTextMessage("测试消息队列");//调用session的createTextMessage建立消息
   }
}

 

消费者代码:

 

/**
 * 项目名:SpringBootDemo
 * 建立人:贺小五
 * 建立时间:16/11/27 下午6:25
 * 类名:MessageListener
 * 类描述:
 *        消息监听者
 */
//注册为一个bean
@Component
public class MessageListener {

   //使用@JmsListenter监听队列名为my-message的队列是否有新消息
   //若是有新消息,则取出进行处理
   //@JmsListenter 注解是spring4.1版本或者以上才有的注解
   @JmsListener(destination = "my-message")
   public void removeMessage(String msg){
      System.out.println("接收到的消息内容:<"+msg+">");
   }

}

 

 

下面就是消息发送者的代码:

/**
 * 项目名:SpringBootDemo
 * 建立人:贺小五
 * 建立时间:16/11/27 下午6:27
 * 类名:MessagePush
 * 类描述:
 *        消息推送者
 */
@Component
//实现CommandLineRunner 接口是为了程序一块儿动,就调用run方法,读者能够不这么写
//使用@Scheduled跟@EnableScheduling来定时执行往队列内放消息
public class MessagePush implements CommandLineRunner{

   //注入 jmsTemplate模板,调用send方法,发送消息对象到名为my-message的队列
   @Autowired
   private JmsTemplate jmsTemplate;

   @Override
   public void run(String... args) throws Exception {
      jmsTemplate.send("my-message",new MessageObject());
   }
}

 

接下来就是执行方法测试了,main方法代码以下:

@SpringBootApplication(scanBasePackages = {"com"})
public class DemoApplication{

   public static void main(String[] args) {
      SpringApplication.run(DemoApplication.class, args);
   }
}

 

最后,咱们在 application.properties配置文件里面,配置activemq-server的链接地址:

#队列地址
spring.activemq.broker-url=tcp://localhost:61616
#帐户
spring.activemq.user=
#密码
spring.activemq.password=
#是不是内存模式
spring.activemq.in-memory=true

 

以上的配置,只是最基础的配置,须要详细配置的话,请查阅官方文档,这里就不贴出来了

 

DemoApplication的main方法,查看打印结果:

查看activemq队列的queues管理页面:

    queues下面前5个title从左往右分别表示

  1. 队列名称
  2. 消息挂起数量(就是没有消费者处理的消息数量)
  3. 消费者个数
  4. 入队列数
  5. 出队列数

 

 

说明成功了,以上就是 基础 activemq-server的基本写法,

 

 

若是你是做为一个队列的消费者,只须要编写消费者代码,使用@JmsListenter注解到方法上,而且制定队列名称,就能监听该队列内的消息.若是你是一个生产者,那就须要定义一个消息对象跟一个消息发送者.以上就是本篇文章的所有内容,具体使用,请根据业务须要进行更改!

 

 

以上,均为本人测试而得出的结果,可能会有出入,或者错误,欢迎指正

 

欢迎转载,请注明出处跟做者,谢谢!

相关文章
相关标签/搜索