JMS的常用方法

简介: import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.Destination; import javax.
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import com.ailk.biapp.ci.localization.cntv.service.IUserSynchronizationService;
import com.asiainfo.biframe.utils.config.Configure;
import com.asiainfo.biframe.utils.spring.SystemServiceLocator;

public class JmsTopicReceiver {
    
    public void topicListener() {

        // ConnectionFactory :连接工厂,JMS 用它创建连接
        ConnectionFactory connectionFactory;
        // Connection :JMS 客户端到JMS Provider 的连接
        Connection connection = null;
        // Session: 一个发送或接收消息的线程
        Session session;
        // Destination :消息的目的地;消息发送给谁.
        Destination destination;
        // 消费者,消息接收者
        MessageConsumer consumer;
        
        String activeUrl = Configure.getInstance().getProperty("ACTIVE_URL");
        String topic = Configure.getInstance().getProperty("TOPIC_NAME");
        
        connectionFactory = new ActiveMQConnectionFactory(
                ActiveMQConnection.DEFAULT_USER,
                ActiveMQConnection.DEFAULT_PASSWORD, activeUrl);
        try {
            
            // 构造从工厂得到连接对象
            connection = connectionFactory.createConnection();
            // 启动
            connection.start();
            // 获取操作连接
            session = connection.createSession(Boolean.FALSE,
                    Session.AUTO_ACKNOWLEDGE);
            //test-queue跟sender的保持一致,一个创建一个来接收
            destination = session.createTopic(topic);
            consumer = session.createConsumer(destination);
            consumer.setMessageListener(new MessageListener() {
                public void onMessage(Message message) {
                    try {
                        TextMessage txtMsg = (TextMessage)message;
                        String msg = txtMsg.getText();
                        //收到topic的时候增量同步用户
                        IUserSynchronizationService service = 
                                (IUserSynchronizationService)SystemServiceLocator.getInstance().getService("userSynchronizationServiceImpl");
                        service.startIncrementalSync(msg);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }

                }
            });

       } catch (Exception e) {
            e.printStackTrace();
        }

    }
    
}

 

目录
相关文章
|
7月前
|
存储 Java 数据库
Java一分钟之-JPA实体监听器:@PrePersist, @PostLoad
【6月更文挑战第15天】JPA实体监听器通过`@PrePersist`等注解在实体生命周期关键点执行逻辑,例如设置默认值或处理并发更新。常见问题包括监听器未注册、并发冲突和性能影响。示例展示了如何在`@PrePersist`中设置默认创建时间和`@PostLoad`时初始化关联数据。使用监听器能增强灵活性,但也需注意潜在问题和优化。
182 6
|
7月前
|
消息中间件 Java API
Java一分钟之-JMS:Java消息服务
【6月更文挑战第11天】Java消息服务(JMS)是企业应用中实现组件解耦和异步通信的标准API。它包含点对点(P2P)和发布/订阅(Pub/Sub)两种消息模型。常见问题包括混淆消息模型、忽略事务管理和资源泄露。解决方法包括明确业务需求选择模型、使用事务确保消息可靠性以及正确关闭资源。文中提供了使用ActiveMQ的P2P模型的生产者和消费者代码示例,强调理解基础概念、避免问题以及实践是使用JMS的关键。
273 2
|
8月前
|
消息中间件 开发框架 Java
使用ActiveMQ进行Java消息传递
【4月更文挑战第16天】本文介绍了ActiveMQ,一个流行的开源消息中间件,它支持JMS规范,提供持久化、事务和集群等功能。文章讲解了Java消息服务(JMS)的点对点和发布/订阅两种消息模型,并展示了如何在Java应用中集成ActiveMQ,创建生产者和消费者进行消息传递。此外,还提及了消息确认和事务在实际应用中的重要性,强调了ActiveMQ在系统解耦、可扩展性和可靠性方面的优势。
94 0
|
网络协议 Java
【零基础学Java】—Socket类(五十五)
【零基础学Java】—Socket类(五十五)
【零基础学Java】—Socket类(五十五)
|
消息中间件 设计模式 缓存
Java观察者模式:轻松实现对象间的一对多依赖
Java观察者模式:轻松实现对象间的一对多依赖
106 0
|
安全 Java API
【JavaEE】Thread 类及常用方法
哈喽,大家好~我是保护小周ღ,本期为大家带来的是 Java 多线程的 Thread 类,讲述了 Thread 类的常用方法及常用属性,例如:线程的 name, 如何启动线程,终止线程,等待线程…… 更多精彩敬请期待:保护小周ღ *★,°*:.☆( ̄▽ ̄)/$:*.°★* ‘
|
Dubbo Java 应用服务中间件
关于在dubbo分布式种实体类Bean序列化产生的问题和内部类序列化的问题 UserServiceImpl must implement java.io.Serializable
今天在学习RPC dubbo的分布式 在跟老师学习的过程中,产生一个运行时报错,首先看项目结构和关键代码
313 0
关于在dubbo分布式种实体类Bean序列化产生的问题和内部类序列化的问题 UserServiceImpl must implement java.io.Serializable
|
前端开发 Java 数据库
JMS 作用| 学习笔记
快速学习 JMS 作用
JMS 作用| 学习笔记
|
Java 应用服务中间件 程序员
netty系列之:使用Jboss Marshalling来序列化java对象
在JAVA程序中经常会用到序列化的场景,除了JDK自身提供的Serializable之外,还有一些第三方的产品可以实现对JAVA对象的序列化。其中比较有名的就是Google protobuf。当然,也有其他的比较出名的序列化工具,比如Kryo和JBoss Marshalling。
|
前端开发 Java 开发者
JMS作用|学习笔记
快速学习JMS作用
JMS作用|学习笔记