首先在jboss-6.0.0.Final\server\all\deploy\hornetq\hornetq-jms.xml文件的configuration标签最后可以加入以下两种类型的目标地址
第一种订阅和发布(Pub/Sub)
<topic name="testTopic">
<entry name="/topic/topicA"/>
</topic>
第二中,点对点 (PTP)
<queue name="testQueue">
<entry name="/queue/queueA"/>
</queue>
客户端发送代码:
首先在src目录加入jndi.properties文件
文件内容为:
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=localhost\:1099
然后新建一个普通Java类开发发送消息
public static void main(String[] args) {
try {
InitialContext init = new InitialContext();
ConnectionFactory cf = (ConnectionFactory) init
.lookup("ConnectionFactory");
Connection con = cf.createConnection();
Session session = con
.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination dest = (Destination) init.lookup("/queue/queueA");
MessageProducer prd = session.createProducer(dest);
prd.send(session.createTextMessage(Testqu.class + "fudongnihao"));
session.close();
} catch (Exception e) {
e.printStackTrace();
}
发送完之后可以采用消息驱动bean接收消息关键代码如下:
首先应该把JBOSS client目录的包加入到消息驱动bean工程类路径下面然后还是开始消息
@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destination", propertyValue = "/queue/queueA"), })
public class DiverBean implements MessageListener {
@Override
public void onMessage(Message arg0) {
TextMessage msg = (TextMessage) arg0;
try {
System.out.println(msg.getText());
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
后记:
PTP(点对点) 消息传递模型规定了一条消息只能传递给一个接收方。采用javax.jms.Queue 表示。
Pub/sub (发布和订阅)消息传递模型允许一条消息传递给多个接收方。采用javax.jms.Topic表示