创建相应的用户队列的两个目标:
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…