当从webservice接收到信息的时候,消息生产者producer立刻把收到的消息放入到jms里面,消费者cusomer这时要设置一个监听,当生产者发送消息时,只要消息被发出来,消费者就会接收到消息,然后进行相应的操作。

在tomcat里面,要进行配置。

首先在tomcat安装目录里面,对conf/context.xml进行配置,加入以下代码:

  1. <Resource
  2.  
  3. name="jms/FailoverConnectionFactory"
  4.  
  5. auth="Container"
  6.  
  7. type="org.apache.activemq.ActiveMQConnectionFactory"
  8.  
  9. description="JMS Connection Factory"
  10.  
  11. factory="org.apache.activemq.jndi.JNDIReferenceFactory"
  12.  
  13. brokerURL="failover:(tcp://localhost:61616)?initialReconnectDelay=100&amp;maxReconnectAttempts=5"
  14.  
  15. brokerName="localhost"
  16.  
  17. useEmbeddedBroker="false"/>
  18.  
  19. <Resource
  20.  
  21. name="jms/NormalConnectionFactory"
  22.  
  23. auth="Container"
  24.  
  25. type="org.apache.activemq.ActiveMQConnectionFactory"
  26.  
  27. description="JMS Connection Factory"
  28.  
  29. factory="org.apache.activemq.jndi.JNDIReferenceFactory"
  30.  
  31. brokerURL="tcp://localhost:61616"
  32.  
  33. brokerName="localhost"
  34.  
  35. useEmbeddedBroker="false"/>
  36.  
  37. <Resource name="jms/topic/MyTopic"
  38.  
  39. auth="Container"
  40.  
  41. type="org.apache.activemq.command.ActiveMQTopic"
  42.  
  43. factory="org.apache.activemq.jndi.JNDIReferenceFactory"
  44.  
  45. physicalName="MY.TEST.FOO"/>
  46.  
  47. <Resource name="jms/queue/MyQueue"
  48.  
  49. auth="Container"
  50.  
  51. type="org.apache.activemq.command.ActiveMQQueue"
  52.  
  53. factory="org.apache.activemq.jndi.JNDIReferenceFactory"
  54.  
  55. physicalName="MY.TEST.FOO.QUEUE"/>

具体也不晓得这个是做什么的,看上去貌似是配置jndi的,我没用jndi的方式,加上这个,也正常运行。所以还是加上吧。

然后在web.xml里面,加入监听的类,这个类是自己写的。

  1. <!-- 添加jms监听 -->
  2. <servlet>
  3. <servlet-name>jms-listener</servlet-name>
  4. <servlet-class>
  5. com.message.JMSListener
  6. </servlet-class>
  7. <load-on-startup>1</load-on-startup>
  8. </servlet>

然后就建立这个类:

  1. package com.message;
  2.  
  3. import javax.jms.Connection;
  4. import javax.jms.ConnectionFactory;
  5. import javax.jms.Destination;
  6. import javax.jms.JMSException;
  7. import javax.jms.Message;
  8. import javax.jms.MessageConsumer;
  9. import javax.jms.MessageListener;
  10. import javax.jms.ObjectMessage;
  11. import javax.jms.Session;
  12. import javax.servlet.http.HttpServlet;
  13.  
  14. import org.apache.activemq.ActiveMQConnection;
  15. import org.apache.activemq.ActiveMQConnectionFactory;
  16. import org.apache.log4j.Logger;public class JMSListener extends HttpServlet implements MessageListener {
  17. /**
  18. *
  19. */
  20. private static final long serialVersionUID = -8455543162505698971L;
  21. private Logger logger=Logger.getLogger(JMSListener.class);
  22.  
  23. ConnectionFactory connectionFactory;
  24. Connection connection=null;
  25. Session session;
  26. Destination destination;
  27. MessageConsumer consumer;
  28. int i;
  29.  
  30. public JMSListener(){
  31. String url = "tcp://localhost:61616";
  32. String queue ="NewNocPacket";
  33. connectionFactory = new ActiveMQConnectionFactory(
  34. ActiveMQConnection.DEFAULT_USER,
  35. ActiveMQConnection.DEFAULT_PASSWORD, url);
  36. try {
  37. connection = connectionFactory.createConnection();
  38. session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
  39. destination = session.createQueue(queue);
  40. consumer = session.createConsumer(destination);
  41. consumer.setMessageListener(this);
  42. connection.start();
  43. } catch (JMSException e) {
  44. // TODO Auto-generated catch block
  45. logger.error("===========cusumer create error");
  46. e.printStackTrace();
  47. }
  48. }
  49.  
  50. @Override
  51. public void onMessage(Message message) {
  52. // TODO Auto-generated method stub
  53. ObjectMessage msg=(ObjectMessage) message;try {
  54. logger.info("=========hello ===========");
  55. i++;
  56. } catch (JMSException e) {
  57. // TODO Auto-generated catch block
  58. e.printStackTrace();
  59. }
  60. }
  61.  
  62. }

原理大概是这样,上面代码不要照抄的。

然后就ok了,部署一下项目,建立一个消息的发送者,消息到达后,监听就会自动执行,打印出onmessage里面的话。

tomcat监听activemq jms配置的更多相关文章

  1. 配置Tomcat监听80端口 配置Tomcat虚拟主机 Tomcat日志

    配置Tomcat监听80端口 • vim /usr/local/tomcat/conf/server.xml Connector port=" protocol="HTTP/1.1 ...

  2. Tomcat介绍、安装jdk、安装Tomcat、配置Tomcat监听80端口

    1.Tomcat介绍 2.安装jdk下载:wget -c http://download.oracle.com/otn-pub/java/jdk/10.0.1+10/fb4372174a714e6b8 ...

  3. 配置Tomcat监听80端口、配置Tomcat虚拟主机、Tomcat日志

    6月27日任务 16.4 配置Tomcat监听80端口16.5/16.6/16.7 配置Tomcat虚拟主机16.8 Tomcat日志扩展邱李的tomcat文档 https://www.linuser ...

  4. Linux centosVMware 配置Tomcat监听80端口、配置Tomcat虚拟主机、Tomcat日志

    一.配置Tomcat监听80端口 关闭tomcat报错 [root@davery src]# /usr/local/tomcat/bin/shutdown.sh 重装tomcat即可 vim /usr ...

  5. Spring Boot 监听 Activemq 中的特定 topic ,并将数据通过 RabbitMq 发布出去

    1.Spring Boot 和 ActiveMQ .RabbitMQ 简介 最近因为公司的项目需要用到 Spring Boot , 所以自学了一下, 发现它与 Spring 相比,最大的优点就是减少了 ...

  6. Tomcat监听443端口的方法

    当我们需要更安全的访问网站的时候就会选择使用https协议,而https协议默认的端口号为443端口,这就是我们为什么向让Tomcat监听在443端口的原因,因为监控在非80端口和443端口的web服 ...

  7. Oracle 11g RAC 环境下单实例非缺省监听及端口配置

    如果在Oracle 11g RAC环境下使用dbca创建单实例数据库后,Oracle会自动将其注册到缺省的1521端口及监听器.大多数情况下我们使用的为非缺省监听器以及非缺省的监听端口.而且在Orac ...

  8. Tomcat监听shutdown释放数据库连接池

    开发时因为更新代码,频繁重启Tomcat,遇到一个问题:在执行shutdown脚本后,Tomcat进程没有关闭依然存在(但是HTTP服务已经停止),需要手动执行kill命令才行.查了一些资料结合经验, ...

  9. 009-Spring Boot 事件监听、监听器配置与方式、spring、Spring boot内置事件

    一.概念 1.事件监听的流程 步骤一.自定义事件,一般是继承ApplicationEvent抽象类 步骤二.定义事件监听器,一般是实现ApplicationListener接口 步骤三.启动时,需要将 ...

随机推荐

  1. SpringMVC 文件上传 MultipartFile

    本的SpringMVC的搭建在我的上一篇文章里已经写过了,这篇文章主要说明一下如何使用SpringMVC进行表单上的文件上传以及多个文件同时上传的步骤 SpringMVC 基础教程 框架分析:http ...

  2. Python的logging,记录log的包

    最近在做自动化测试时,想给他加上日志,所以用到logging的模块,以下是python增加log的几种方式 一.python代码配置方式(当然还有一种是可以多模块通用的一个python代码设置,这个网 ...

  3. Windows平台下Flutter安装,配置,初运行。

    Flutter是什么?他是谷歌根据Dark语言开源的跨平台开发依赖.和目前比较火的Reactive Native一样,一套代码能够实现两个不同平台的App.那么为什么要介绍Flutter而不是在国内大 ...

  4. web项目生成web.xml的两种方式

    做了很多的项目,今天着手写个小demo发现做web项目的时候还需要从别的地方去拷贝,那么如果没有地方可以拷贝,要怎么办呢?下边介绍三种方式生成web.xml文件. 一.maven项目情况:(STS版) ...

  5. Little-endian和Big-endian(小端数据和大端数据)

    Little和Big指的是内存地址的大小,end指的是数据的末尾. Little-endian指内存地址低的地方存数据的末尾(即低字节) Big-endian指内存地址高的地方存数据的末尾(即高字节) ...

  6. MyBatis高级查询

    -------------------------siwuxie095 MyBatis 高级查询 1.MyBatis 作为一个 ORM 框架,也对 SQL 的高级查询做了支持, MyBatis 高级查 ...

  7. IIS7web服务器调试ASP.net程序遇到的一些故障的解决办法

    1. [由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面] 故障描述:[由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面] ...

  8. 230. Kth Smallest Element in a BST 找到bst中的第k小的元素

    [抄题]: Given a binary search tree, write a function kthSmallest to find the kth smallest element in i ...

  9. OC 线程操作 - GCD使用 - 栅栏函数

    - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ //同步函数无需栅栏函数 //栅栏 ...

  10. 11-st跳舞消耗体力最少

    /*                                                   炫舞家 ST 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述   ...