下面的例子程序是从Jboss的官方文档上面获取的。简单改造。
文档地址:http://www.jboss.org/file-access/default/members/jbossas/freezone/docs/Server_Configuration_Guide/4/html/index.html
please refer the chapter 7
package org.liuxt.jboss;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueReceiver;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.TextMessage;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import org.apache.log4j.Logger;
/**
* A complete JMS client example program that sends a
* TextMessage to a Queue and asynchronously receives the
* message from the same Queue.
*
* @author Scott.Stark@jboss.org
* @version $Revision: 1.9 $
*/
public class PTPMessage
{
static Logger log=Logger.getLogger(PTPMessage.class);
QueueConnection conn;
QueueSession session;
Queue que;
QueueSender sender;
QueueReceiver receiver;
int i=0;
int messageCount=100;
final BlockingQueue<String> blockQueue=new ArrayBlockingQueue<String>(100);
public class ReceiverListener implements MessageListener
{
int j=0;
public void onMessage(Message msg)
{
TextMessage tm = (TextMessage) msg;
try {
log.info("onMessage, received message:=" + tm.getText());
//log.info("onMessage, received message:=" + tm.getJMSMessageID());
} catch(Throwable t) {
t.printStackTrace();
}
finally{
if(++j==messageCount){
try {
blockQueue.put("over");
} catch (InterruptedException e) {
}
}
}
}
}
/**
* setup Setup the PTP connection, session
* @throws JMSException
* @throws NamingException
*/
public void setupPTP()
throws JMSException,
NamingException
{
InitialContext iniCtx = new InitialContext();
Object tmp = iniCtx.lookup("ConnectionFactory");
QueueConnectionFactory qcf = (QueueConnectionFactory) tmp;
conn = qcf.createQueueConnection();
que = (Queue) iniCtx.lookup("queue/testQueue");
session = conn.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
conn.start();
}
public void startMessageTest() throws JMSException, NamingException
{
while(++i<=this.messageCount){
//log.info("Begin sendRecvAsync");
// Send a text msg
TextMessage tm = session.createTextMessage("...message..."+i);
this.sender.send(tm);
//log.info("sending message, sent text=" + tm.getText());
}
}
private void createSender() throws JMSException {
this.sender = this.session.createSender(que);
}
private void createReceiver() throws JMSException {
this.receiver = this.session.createReceiver(que);
this.receiver.setMessageListener(new ReceiverListener());
}
public void stop()
throws JMSException
{
conn.stop();
this.sender.close();
this.receiver.close();
session.close();
conn.close();
}
public static void main(String args[])
throws Exception
{
PTPMessage client = new PTPMessage();
client.setupPTP();
client.createSender();
client.createReceiver();
client.startMessageTest();
client.blockQueue.take();
//done.acquire();
client.stop();
}
}
分享到:
相关推荐
- JMS 支持两种主要的消息模型:点对点(Point-to-Point, PTP)和发布/订阅(Publish/Subscribe, Pub/Sub)。 - 主要组件包括:消息生产者、消息消费者、消息代理(如消息队列或主题)、消息和目的地。 2. **...
- **消息模型**:JMS支持两种消息模型,点对点(Point-to-Point,P2P)和发布/订阅(Publish/Subscribe,Pub/Sub)。 - P2P模型中,消息从一个生产者发送到一个队列,然后由一个或多个消费者消费。消息一旦被消费...
2. 消息模型:JMS支持两种消息模型——点对点(Point-to-Point)和发布/订阅(Publish/Subscribe)。前者基于队列,后者基于主题。 3. JMS实体:主要包括Message(消息)、MessageProducer(消息生产者)、...
JMS支持两种基本的传递模型:点对点(Point-to-Point)和发布/订阅(Publish/Subscribe)。点对点使用队列,每个消息只有一个消费者;发布/订阅使用主题,允许多个订阅者接收消息。 以上只是JBoss 4.2.2 GA使用和...
- **消息模型**:JMS提供了两种主要的消息模型——点对点(Point-to-Point,P2P)和发布/订阅(Publish/Subscribe,Pub/Sub)。P2P模型基于队列,消息由一个生产者发送到队列,然后由一个或多个消费者接收;Pub/Sub...
JMS 提供了一种在分布式环境中可靠地传递数据的方式,支持点对点(Point-to-Point)和发布/订阅(Publish/Subscribe)两种模型。Jboss Messaging 实现了JMS规范,提供了更高级别的功能和优化,如事务处理、高可用性...
它定义了两种消息模型:点对点(Point-to-Point,P2P)和发布/订阅(Publish/Subscribe, Pub/Sub)。在MDB中,通常使用P2P模型的队列或Pub/Sub模型的主题。 4. **MDB的生命周期**: MDB的生命周期由容器管理,包括...
JMS支持两种主要的消息传递模型:点对点(Point-to-Point, PTP)和发布/订阅(Publish/Subscribe, Pub/Sub)。 - **PTP(点对点)**:在这种模型中,消息从发送者发送到一个特定的目的地,然后由一个消费者接收。...
JMS支持两种类型的消息模型:点对点(Point-to-Point, Queue)和发布/订阅(Publish/Subscribe, Topic)。 在本案例中,我们将深入探讨如何在JBoss ESB中利用JMS Topic实现消息通信。 #### 二、JMS Topic应用场景 ...
- **消息队列模式**(Point-to-Point):消息被发送到一个队列,由一个消费者接收,适合一对一的通信。 - **消息的广播/订阅模式**(Publish-Subscribe):消息发布到一个主题,多个订阅者可以接收到,适用于一对...
- **消息服务体系结构**:JMS定义了两种主要的消息传送模型——点对点(Point-to-Point, PTP)和发布/订阅(Publish/Subscribe, Pub/Sub)模型。 - **消息传送模型对照表**:PTP模式使用Queue,消息只能被一个消费...
深入理解队列(Queue)和主题(Topic)消息的发送与接收机制,即点对点(Point-to-Point)和发布/订阅(Publish/Subscribe)消息传递模型,对于构建高可用、松耦合的分布式系统有着不可替代的作用。 #### 六、实体...
- **点对点(Point-to-Point)**:在这种模式下,每个消息只被一个消费者接收,通常用于实现请求-响应模型。 - **发布/订阅(Publish/Subscribe)**:在此模式下,多个消费者可以订阅同一主题,当消息发布时,所有...
JMS(Java Message Service)是Sun Microsystems提出的一种消息中间件接口标准,它定义了两种消息模型:点对点(Point-to-Point,简称P2P)和发布/订阅(Publish/Subscribe,简称Pub/Sub)。P2P模型中,每个消息只能...
4. **消息模式**:JMS提供了两种主要的消息模式,即点对点(Point-to-Point,通过队列Queue/TemporaryQueue实现)和发布订阅(Publish/Subscribe,通过Topic/TemporaryTopic实现)。其中,DurableSubscriber是在发布...
- 包括两种消息传递模型:Point-to-Point和Publish/Subscribe。 #### 七、Entity Bean(实体Bean) ##### 1. **持久化配置文件** - `persistence.xml`用于定义持久化单元。 - 数据源配置,如MySQL、MS SQL Server...
JMS支持两种主要的消息模型:点对点(Point-to-Point, PTP)和发布/订阅(Publish/Subscribe, Pub/Sub)。在点对点模型中,消息从一个生产者发送到一个队列,然后由一个消费者接收。而在发布/订阅模型中,消息从一个...