配置监听器使项目启动时创建消费者

1、web.xml中注册监听器
<listener>
<listener-class>com.activemq.common.InitComponent</listener-class>
</listener>
2、InitComponent实现ServletContextListener,ApplicationContextAware接口,重写contextInitialized(ServletContextEvent servletContextEvent)方法。

特别注意,如果使用spring管理activemq,要修改配置与实际生产一致。这种方式会在项目启动时创建消费者,若项目做了负载均衡,多个Tomcat启动项目,会造成有多个消费者客户端。

@Component
public class InitComponent implements ServletContextListener,ApplicationContextAware{

private static ApplicationContext applicationContext;
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
InitComponent.applicationContext=applicationContext;
}
/**
* 程序运行时即初始化activemq消费组件
*/
public void contextInitialized(ServletContextEvent servletContextEvent) {

ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://132.252.3.22:61616");
Connection connection;
Session session;
Destination destination;
MessageConsumer messageConsumer;
try {
connection = factory.createConnection();
connection.start();
session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);
destination = session.createTopic("ZHXJ_QUEUE"); // 创建连接的消息队列
messageConsumer = session.createConsumer(destination);// 创建消息消费者
messageConsumer.setMessageListener(new StaffMsgListener());
} catch (JMSException e) {
e.printStackTrace();
}
}
}

原文地址:https://www.cnblogs.com/xyhero/p/9404595.html

时间: 2024-08-09 03:53:47

配置监听器使项目启动时创建消费者的相关文章

在web项目启动时,使用监听器来执行某个方法

在web项目中有很多时候需要在项目启动时就执行一些方法,而且只需要执行一次,比如:加载解析自定义的配置文件.初始化数据库信息等等,在项目启动时就直接执行一些方法,可以减少很多繁琐的操作. 这里写了个简单的实例,用的是监听器机制,创建一个类实现ServletContextListener 接口,实现里面的contextInitialized和contextDestroyed方法. 1 package com.test.listener; 2 3 import javax.servlet.Servl

hibernate 项目启动时总会自动创建表

hibernate 项目启动时总会自动创建表,造成以下错误 Caused by: java.sql.SQLSyntaxErrorException: ORA-00955: 名称已由现有对象使用 经验证,是方言使用错误导致的.项目使用的数据库版本为Oracle11g,方言应该使用  org.hibernate.dialect.Oracle10gDialect 修改配置如下: jpa: show-sql: true database-platform: org.hibernate.dialect.O

1.Spring项目启动时,加载相关初始化配置

Spring项目启动时,会加载一些常用的配置: 1.加载spring上下文 SpringApplicationContextUtils.initApplicationContext(event.getServletContext()); 2.加载属性文件 EsbCommsUtils.initComms(event.getServletContext()); 1 public class EsbCommsUtils { 2 3 private static Log logger = LogFact

在web项目启动时,执行某个方法

在web项目中有很多时候需要在项目启动时就执行一些方法,而且只需要执行一次,比如:加载解析自定义的配置文件.初始化数据库信息等等,在项目启动时就直接执行一些方法,可以减少很多繁琐的操作. 在工作中遇到了项目初始数据需要跟其他项目同步的问题,也就是说在项目部署后,启动的时候就要同步另外一个项目的数据,这里写了个简单的实例,用的是监听器机制,创建一个类实现ServletContextListener 接口,实现里面的contextInitialized和contextDestroyed方法. pac

spring配置与Web 项目启动

今天打算学习下spring继承quartz的用法,然后想搭建一个纯净的spring项目用来做相关的实验,虽然只是寥寥几行配置文件,但突然选择性失忆忘了这其中容器加载的过程和配置的意义.复习了下此刻写个随便记录下刚刚的领悟. web.xml配置 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instanc

web项目启动时,执行某个方法

1.监听(Listener) web文件添加 <listener> <listener-class>cn.ro.common.InitListener</listener-class> </listener> 添加InitListener类,如下 package cn.ro.common; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener

javaweb项目启动时自动启动rmi服务器实例

1.我们先写一个web项目启动时需要运行的类RmiRegisterServlet.java package com.mx.Servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import com.mx.framework.daoimpl.RMIServerDAOImpl; @SuppressWarning

用实现ApplicationListener来实现项目启动时运行某些程序的注意事项

起初在网上搜索在项目启动时运行某些程序时,看到其中有用实现ApplicationListener来做的一种方法,当时没有直接复制他们的代码,而是手动写的.如下: package com.han.listener; import java.text.SimpleDateFormat; import java.util.Date; import org.springframework.context.ApplicationListener; import org.springframework.co

SpringMVC——项目启动时从数据库查询数据

SpringMVC项目中遇到这样的问题: 1.很多数据字典需要从数据库中查询: 2.懒得修改SQL语句: 3.想在项目中声明静态变量存储数据字典,但是希望这个字典可以在项目启动时进行加载. 当遇到这样的问题时,可以通过实现org.springframework.beans.factory.InitializingBean接口进行实现这一功能. 只需要实现afterPropertiesSet()方法就将在项目扫描完注解时调用这一方法,在这个方法内调用数据库查询的方法,查出所有数据字典,并保存在静态