MQ JMS 发布订阅配置、代码-中文3

创建相应的用户队列的两个目标:

1。用鼠标右键点击目的地,然后选择”新建” – >”目标,以启动新的”目标向导”。

2。在第一步中,在”名称”字段中输入EmailQueue”,然后单击”下一步”。

3。单击”下一步”,在第二个屏幕。

4。在最后一个页面中,单击”选择”按钮旁边的”队列管理器”,并从列表选择TestQM01。

5。单击”选择”按钮旁边的”队列”字段中选择”电子邮件”(参见图15)。从列表中排队。单击”完成”。

6。重复上面的步骤,以创建另一个称为SMSQueue SMS.Queue的目标。您的目的地应该看起来像那些在图16中。

 

编码JMS发布服务器和订阅

通过MQ资源管理器中,你定义了你的主题和订阅,编写发布服务器和订阅服务器的应用程序是很容易的。要发布的消息,您必须写入一个消息,一个主题(就像你的队列)。用户只须从队列中读取消息。

本文下载的源代码使用通用的JMS接口,处理队列和主题统一为目标。它提供了编译后的类,包括新闻发布和两个用户(对应的电子邮件和短信应用)。

以下是类的简要说明。

JNDIUtil ClassThis类的方法来检索对象的名字,通过JNDI查找(参见清单1)。

Java的代码

package com.test.pubsub;

/**

* Listing 1. JNDIUtil Class

* This class includes methods to retrieve objects by name through JNDI lookup.

* package devx.articles.pubsub;

*/

//JMS classes

import javax.jms.JMSException;

import javax.jms.ConnectionFactory;

import javax.jms.Destination;

 

//JNDI classes

import javax.naming.InitialContext;

import javax.naming.Context;

import javax.naming.NamingException;

 

//Standard Java classes

import java.util.Hashtable;

 

/**

*

* A wrapper class for JNDI calls

* 您将使用这个类的方法来检索您已经定义的JMS对象的引用。

*/

public class JNDIUtil

{

    private Context context;

    

    public JNDIUtil(String icf, String url) throws JMSException, NamingException

    {

        Hashtable environment = new Hashtable();

 

        environment.put(Context.INITIAL_CONTEXT_FACTORY, icf );    

        environment.put(Context.PROVIDER_URL, url);

 

        context= new InitialContext( environment );

        

    }

    

    /**

     * @param ObjName Object Name to be retrieved

     * @return Retrieved Object

     * @throws NamingException

     */

    private Object getObjectByName(String ObjName) throws NamingException

    {

        return context.lookup( ObjName );

    }

    

    /**

     * @param factoryName Factory Name

     * @return ConnectionFactory object

     * @throws NamingException

     */

    public ConnectionFactory getConnectionFactory(String factoryName) throws NamingException

    {

        return (ConnectionFactory) getObjectByName(factoryName);

    }

 

    /**

     * @param destinationName Destination Name

     * @return ConnectionFactory object

     * @throws NamingException

     */

    public Destination getDestination(String destinationName) throws NamingException

    {

        return (Destination) getObjectByName(destinationName);

    }

    

}

您将使用这个类的方法来检索您已经定义的JMS对象的引用。

NewsPublisher ClassThis类消息发布到新闻主题(参见清单2)。

Java的代码

package com.test.pubsub;

 

//JMS classes

import javax.jms.JMSException;

import javax.jms.ConnectionFactory;

import javax.jms.Connection;

import javax.jms.Session;

import javax.jms.Destination;

import javax.jms.MessageProducer;

import javax.jms.TextMessage;

 

//JNDI classes

import javax.naming.NamingException;

 

/**

* A class to demonstrate how to a publish to a topic.

* 这个类消息发布到新闻主题(参见清单2)。

* 其出发点是查找一个连接工厂。您可以使用工厂来创建一个连接:

*/

public class NewsPublisher

{

 

public static String icf = “com.sun.jndi.fscontext.RefFSContextFactory”;

以下文章点击率最高

Loading…


发表评论

电子邮件地址不会被公开。 必填项已用*标注