`
SpaceCity
  • 浏览: 98811 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

WebSphere MQ简单实例(接收消息)

阅读更多
MQ接收消息:
package com.main;

import java.io.UnsupportedEncodingException;
import java.util.Enumeration;
import javax.jms.BytesMessage;
import javax.jms.JMSException;
import javax.jms.MapMessage;
import javax.jms.Message;
import javax.jms.ObjectMessage;
import javax.jms.StreamMessage;
import javax.jms.TextMessage;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jms.core.JmsTemplate;

/**
* MQ接收消息
*
* @author 88183239
*/
public class TestReceive
{
    /**
     * jms模板,封装链接工厂、队列、消息生产者
     */
    private JmsTemplate jmsTemplate;

    public TestReceive()
    {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        jmsTemplate = (JmsTemplate)ctx.getBean("receiveTemplate");
    }

    /**
     * 接收消息
     *
     * @param msg消息
     */
    public void showResult()
    {
        Message msg = jmsTemplate.receive();
        onMessage(msg);
        msg = jmsTemplate.receive();
        onMessage(msg);
    }

    @SuppressWarnings("unchecked")
    private void onMessage(Message msg)
    {
        // text消息
        if (msg instanceof TextMessage)
        {
            TextMessage message = (TextMessage)msg;
            try
            {
                String data = message.getText();
                System.out.println(data);
            }
            catch (JMSException e)
            {
                throw new RuntimeException("JMSException", e);
            }
        }
        // 对象消息
        else if (msg instanceof ObjectMessage)
        {
            ObjectMessage message = (ObjectMessage)msg;
            try
            {
                int id = message.getIntProperty("id");
                System.out.println(id);
                boolean flag = message.getBooleanProperty("flag");
                System.out.println(flag);
            }
            catch (JMSException e)
            {
                e.printStackTrace();
            }
        }
        // map消息
        else if (msg instanceof MapMessage)
        {
            MapMessage message = (MapMessage)msg;
            try
            {
                Enumeration mapNames = message.getMapNames();
                while (mapNames.hasMoreElements())
                {
                    String data = (String)mapNames.nextElement();
                    System.out.println(message.getString(data));
                }
            }
            catch (JMSException e)
            {
                throw new RuntimeException("JMSException", e);
            }
        }
        // bytes消息
        else if (msg instanceof BytesMessage)
        {
            BytesMessage message = (BytesMessage)msg;
            byte[] buff = null;
            String data = null;
            try
            {
                long length = message.getBodyLength();
                buff = new byte[(int)length];
                message.readBytes(buff);
                data = new String(buff, "UTF-8");
                System.out.println(data);
            }
            catch (JMSException e)
            {
                e.printStackTrace();
            }
            catch (UnsupportedEncodingException e)
            {
                e.printStackTrace();
            }
        }
        // stream消息
        else if (msg instanceof StreamMessage)
        {
            StreamMessage message = (StreamMessage)msg;
            try
            {
                String data = message.readString();
                System.out.println(data);
            }
            catch (JMSException e)
            {
                e.printStackTrace();
            }
        }

    }

    /**
     * @param args
     */
    public static void main(String[] args)
    {
        TestReceive send = new TestReceive();
        send.showResult();
    }

}

MQ监听消息:
package com.mq;

import java.io.UnsupportedEncodingException;
import java.util.Enumeration;
import javax.jms.BytesMessage;
import javax.jms.JMSException;
import javax.jms.MapMessage;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;
import javax.jms.StreamMessage;
import javax.jms.TextMessage;

/**
* 消息监听
*
* @author
*/
public class ProductView implements MessageListener
{

    @SuppressWarnings("unchecked")
    public void onMessage(Message msg)
    {
        // text消息
        if (msg instanceof TextMessage)
        {
            TextMessage message = (TextMessage)msg;
            try
            {
                String data = message.getText();
                System.out.println(data);
            }
            catch (JMSException e)
            {
                throw new RuntimeException("JMSException", e);
            }
        }
        // 对象消息
        else if (msg instanceof ObjectMessage)
        {
            ObjectMessage message = (ObjectMessage)msg;
            try
            {
                int id = message.getIntProperty("id");
                System.out.println(id);
                boolean flag = message.getBooleanProperty("flag");
                System.out.println(flag);
            }
            catch (JMSException e)
            {
                e.printStackTrace();
            }
        }
        // map消息
        else if (msg instanceof MapMessage)
        {
            MapMessage message = (MapMessage)msg;
            try
            {
                Enumeration mapNames = message.getMapNames();
                while (mapNames.hasMoreElements())
                {
                    String data = (String)mapNames.nextElement();
                    System.out.println(message.getString(data));
                }
            }
            catch (JMSException e)
            {
                throw new RuntimeException("JMSException", e);
            }
        }
        // bytes消息
        else if (msg instanceof BytesMessage)
        {
            BytesMessage message = (BytesMessage)msg;
            byte[] buff = null;
            String data = null;
            try
            {
                long length = message.getBodyLength();
                buff = new byte[(int)length];
                message.readBytes(buff);
                data = new String(buff, "UTF-8");
                System.out.println(data);
            }
            catch (JMSException e)
            {
                e.printStackTrace();
            }
            catch (UnsupportedEncodingException e)
            {
                e.printStackTrace();
            }
        }
        // stream消息
        else if (msg instanceof StreamMessage)
        {
            StreamMessage message = (StreamMessage)msg;
            try
            {
                String data = message.readString();
                System.out.println(data);
            }
            catch (JMSException e)
            {
                e.printStackTrace();
            }

        }
    }

}

配置信息:
<bean id="jmsConnectionFactory" class="com.ibm.mq.jms.MQQueueConnectionFactory">
<property name="hostName" value="10.21.139.43" />
<property name="port" value="1414" />
<property name="CCSID" value="1381" />
<property name="queueManager" value="QM_SN_CNHQ_9379C" />
</bean>

<bean id="queue" class="com.ibm.mq.jms.MQQueue">
<property name="baseQueueName" value="default" />
</bean>

<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="jmsConnectionFactory" />
<property name="defaultDestination" ref="queue" />
<property name="pubSubDomain" value="false" />
</bean>

<!-- 此为接收MQ数据用的配置 -->
<bean id="productViewJmsContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="jmsConnectionFactory" />
<property name="destination" ref="queue" />
<property name="messageListener">
<bean class="com.mq.ProductView" />
</property>
<property name="concurrentConsumers" value="10" />
</bean>
  • src.zip (3.3 KB)
  • 下载次数: 150
分享到:
评论
2 楼 weiqiulai 2012-06-21  
请问<bean id="queue" class="com.ibm.mq.jms.MQQueue">
<property name="baseQueueName" value="default" />
</bean>
您的队列名就是“default”吗?
1 楼 weiqiulai 2012-06-20  
不明白ProductView监听启动到了什么作用?我觉得逻辑是MQ接到数据然后,被ProductView监听到于是启动TestReceive接收消息??楼主的意见呢????

相关推荐

    WebSphere MQ简单实例(发送消息)

    综上所述,WebSphere MQ实例涉及了消息中间件的基本概念、API的使用、配置文件解析以及应用程序的部署与测试。通过学习和实践这样的实例,开发者能够更好地理解和运用WebSphere MQ在实际项目中的消息传输功能。

    WebSphere MQ 多实例部署方案

    WebSphere MQ 多实例部署方案是一种高级别的高可用性(HA)配置,旨在增强消息中间件的稳定性,确保服务在单个实例失败时仍能继续运行。这一特性自MQV7.0.1版本开始引入,是WebSphere MQ产品的一个核心组件。多实例...

    基于WebSphere MQ发送消息的简单JMS实例

    通过这个简单的JMS和WebSphere MQ实例,你可以了解到消息队列的基本用法。在实际项目中,这可以扩展到处理大量并发请求、保证数据一致性、或者实现解耦的微服务架构。了解和掌握JMS与WebSphere MQ的结合使用,对于...

    Websphere MQ入门教程-使用IBM Websphere MQ

    本教程的详细内容可参考附件中的“WebSphere MQ入门教程7.doc”,该文档将深入讲解上述知识点,并包含实例代码和配置步骤,是学习和理解WebSphere MQ的良好参考资料。在实际应用中,读者需结合自身业务场景,灵活...

    Java下操作IBM Websphere MQ的项目案例

    9. **实例化和测试**:在项目中,你可能会发现示例代码展示了如何创建一个简单的发送和接收消息的测试用例。这些示例会帮助你理解如何在实际应用中使用IBM MQ。 通过这个项目案例,你可以深入了解Java与IBM MQ的...

    Java监控WebSphere MQ 7.5中间件信息

    虽然描述中提到的是PCF,但JMS也可以用于监控WebSphere MQ,它提供了消息生产者和消费者的概念,允许程序发送和接收消息。 4. **使用Java PCF连接MQ**:Java程序可以通过com.ibm.mq.pcf.PCFConnection类建立到MQ...

    Websphere MQ入门教程

    WebSphere MQ基于消息队列模型,消息在发送方被放入队列,然后由接收方从队列中取出。这种异步通信方式提供了高可用性和可扩展性。 1.4 **WebSphere MQ的重要特点** - **消息持久化**:即使发送方或接收方系统崩溃...

    基于WebSphere MQ的MQ trigger实例

    【基于WebSphere MQ的MQ Trigger实例】是一种在IBM WebSphere MQ消息中间件中实现自动响应消息触发机制的技术。MQ Trigger允许应用程序对特定消息队列中的消息进行监控,并在满足预定义条件时执行相应的操作,例如...

    Websphere+MQ全套教程合集.rar

    13. 实现点对点通信:通过实例展示如何使用MQ实现实时系统间的简单通信。 14. 故障恢复与备份:学习如何设计和实施灾难恢复计划,包括备份和恢复Queue Manager。 15. 集成其他系统:了解如何将MQ与ERP、CRM等系统...

    WebsphereMQ查看软件

    “具体代码”这部分可能包含了Java或其他编程语言的示例代码,用于操作WebsphereMQ,例如打开队列、发送和接收消息。在Java中,通常会使用WebSphere MQ Java Message Service (JMS) API来与MQ进行交互。以下是一个...

    IBM Websphere MQ PCF 编程实例

    IBM WebSphere MQ(以前称为MQSeries)是IBM提供的一款企业级消息中间件产品,它允许应用程序之间通过异步传输消息来实现数据交换。PCF(Platform Configuration Facility)是WebSphere MQ的一部分,它提供了与...

    IBM WebSphere MQ的使用

    6. **实例应用**:在“WebSphere MQ 实例”标签中,我们可以期待看到具体的代码示例,如如何连接队列管理器,如何发送和接收消息,以及如何处理异常等。 7. **安全性**:WebSphere MQ支持多种安全机制,包括SSL/TLS...

    IBM WebSphere MQ 7.5基本用法

    IBM WebSphere MQ,常被称为WMQ,是IBM提供的一款企业级的消息中间件产品,它允许应用程序之间通过异步消息传递进行通信,确保数据在不同系统间的可靠传输。在本教程中,我们将深入探讨IBM WebSphere MQ 7.5的基础...

    IBM Websphere MQ Windows版快速入门.pdf

    - **产品定位**: WebSphere MQ是一款企业级的消息中间件,用于实现不同应用程序和服务之间的异步通信。 - **版本信息**: 文档覆盖的是版本5.3的WebSphere MQ Windows版。 - **兼容性**: 支持多种Windows操作系统版本...

    C# 实现消息的收发IBM WebSphere MQ 队列

    本实例将深入探讨如何使用C#语言来实现与IBM WebSphere MQ的交互,进行消息的发送和接收。 首先,我们需要了解IBM WebSphere MQ的基本概念。MQ是一种中间件,通过消息队列作为中介,使得应用程序可以在不直接互相...

    IBM websphere MQ 多种代码事例

    IBM WebSphere MQ,通常简称为MQ,是一种企业级的消息中间件,由IBM开发,用于在分布式系统中可靠地传输数据。消息中间件的作用是解耦应用程序,使得它们可以通过消息进行通信,而无需直接互相了解对方的实现细节。...

    IBM WebSphere MQ 7.5基本用法.docx

    2. **队列管理器(Queue Manager)**: 队列管理器是IBM WebSphere MQ的核心组件,它负责管理和调度消息的传输。创建队列管理器可以使用`crtmqm`命令,例如`crtmqm QM_TEST`。队列管理器可以理解为数据库实例中的模式...

    WebSphere MQ API

    在实际开发中,开发者通常会通过阅读`Websphere MQ API.chm`文件来学习如何初始化连接、创建会话、设置消息属性、发送和接收消息,以及处理异常和错误。这个文档会详细解释每个类和方法的功能,提供示例代码,并指导...

    IBM MQ C++实例代码,连接MQ获取消息

    IBM MQ(原名WebSphere MQ)是IBM提供的一款企业级的消息中间件,它允许应用程序在不同的网络协议、操作系统和硬件之间可靠地交换信息。在这个场景中,"IBM MQ C++实例代码,连接MQ获取消息"是指使用C++编程语言与IBM...

Global site tag (gtag.js) - Google Analytics