idea下ActiveMQ+Spring的简单demo

本文使用的是intellij idea工具。

下面主要介绍一个简单的activeMQ的demo。

本文主要是spring风格的实现。

先来看下包结构:

 idea下ActiveMQ+Spring的简单demo_第1张图片

 

 

demo包含一个生产者,一个消费者,一个包含main方法的ActiveMaDemo类执行程序,还有一个自定义的类MyMessage作为消息传递的类型。所有的bean配置都放在beans.xml。

各个类的代码如下:

 1 public class Producer {
 2     private JmsTemplate template;
 3     private Destination destination;
 4 
 5     public void produce(MyMessage message){
 6         template.convertAndSend(destination, message);
 7     }
 8 
 9     public JmsTemplate getTemplate() {
10         return template;
11     }
12 
13     public void setTemplate(JmsTemplate template) {
14         this.template = template;
15     }
16 
17     public Destination getDestination() {
18         return destination;
19     }
20 
21     public void setDestination(Destination destination) {
22         this.destination = destination;
23     }
24 }
 1 public class Consumer {
 2     private int num;
 3 
 4     public void consume(MyMessage message) {
 5         System.out.println(num+"号消费"+message);
 6     }
 7 
 8     public int getNum() {
 9         return num;
10     }
11 
12     public void setNum(int num) {
13         this.num = num;
14     }
15 }
 1 public class MyMessage implements Serializable {
 2     private static final long serialVersionUID = -4360789240260037588L;
 3 
 4     private String text;
 5 
 6     public String getText() {
 7         return text;
 8     }
 9 
10     public void setText(String text) {
11         this.text = text;
12     }
13 
14     public String toString(){
15         return text;
16     }
17 }
 1 import org.apache.xbean.spring.context.ClassPathXmlApplicationContext;
 2 import org.springframework.context.ApplicationContext;
 3 
 4 public class ActiveMqDemo {
 5 
 6     public static void main(String[] args){
 7         ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
 8         Producer producer = (Producer) context.getBean("producer");
 9         for(int i=0;i<10;i++){
10             MyMessage myMessage = new MyMessage();
11             System.out.println("生产第"+i+"条消息!");
12             myMessage.setText("第"+i+"条消息!");
13             producer.produce(myMessage);
14         }
15     }
16 }

pom需要的依赖如下:


          org.apache.activemq
          activemq-all
          5.14.5

接下来看下配置文件

 1 
 2  3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:amq="http://activemq.apache.org/schema/core"
 4        xsi:schemaLocation="http://www.springframework.org/schema/beans
 5        http://www.springframework.org/schema/beans/spring-beans.xsd
 6        http://activemq.apache.org/schema/core
 7        http://activemq.apache.org/schema/core/activemq-core-5.8.0.xsd">
 8 
 9     
10     
11 
12     
13     
14     
15     class="org.apache.activemq.ActiveMQConnectionFactory">
16         
17         
18         
19         
20             
21                 demo
22             
23         
24     
25 
26     
27     
28 
29     
30     class="org.apache.activemq.command.ActiveMQQueue">
31         
32             queue
33         
34     
35 
36     
37     class="org.springframework.jms.core.JmsTemplate">
38         
39     
40 
41     
42     class="demo.Producer">
43         
44         
45     
46 
47     
48     class="demo.Consumer">
49         
50     
51 
52     
53     class="org.springframework.jms.listener.adapter.MessageListenerAdapter">
54         
55         
56     
57 
58     
59     class="org.springframework.jms.listener.DefaultMessageListenerContainer">
60         
61         
62         
63     
64 

其中 jmsConnectionFactory 的 trustedPackages 属性用来把我自定义的MyMessage添加到白名单,因为ActiveMQ不认识这个类型~, 同时,在自定义传递消息的类时要注意实现序列化,不然会报错。

接下来运行 ActiveMqDemo 的main函数就行了,结果如下:

idea下ActiveMQ+Spring的简单demo_第2张图片

 

 同时,打开http://localhost:8161/admin/queues.jsp,我们也可以看到ActiveMQ的消息产生和消费情况。

idea下ActiveMQ+Spring的简单demo_第3张图片

完!

 

转载于:https://www.cnblogs.com/liuyuchong/p/7895523.html

你可能感兴趣的:(idea下ActiveMQ+Spring的简单demo)