|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
先谈谈我对java的一些认识。我选择java,是因为他语法简单,功能强大,从web,到桌面,到嵌入式,无所不能。但当我进一步了解了java后,感叹,java原来也有许多缺点。
对jms不是很熟习,弄了几天终究有了点思绪。这里有两个程序、增添了个queue-example-service.xml设置文件很复杂,庞大点的在今后在说。
packageorg.jboss.tutorial.mdb.bean;
importjavax.ejb.MessageDriven;
importjavax.ejb.ActivationConfigProperty;
importjavax.jms.Message;
importjavax.jms.MessageListener;
@MessageDriven(activateConfig=
{
@ActivationConfigProperty(propertyName="destinationType",propertyValue="javax.jms.Queue"),
@ActivationConfigProperty(propertyName="destination",propertyValue="queue/tutorial/example")
})
//AdestinationistheobjectontheJBossMQserverthatclients
//usetosendandreceivemessages.Therearetwotypesof
//destinationobjects,QueuesandTopics.
publicclassExampleMDBimplementsMessageListener
{
publicvoidonMessage(MessagerecvMsg)
{
System.out.println("----------------");
System.out.println("Receivedmessage");
System.out.println("----------------");
}
}
英文正文是我在TheJBoss4ApplicationServerGuide找的,能够晓得destination是在jboss服务器里卖力收发动静(message)的中央。Destination依据动静公布体例的分歧分两种:Queues和Topics.
topic公布同意一对多,或多对多通信通道,动静的发生者被叫做publisher,动静承受者叫做subscriber,故称为公布/定阅(publish/Subscribe)。
queue是别的一种体例,仅仅同意一个动静传送给一个客户。一个发送者将动静放在动静行列中,承受者从行列中抽取并失掉动静,动静就会在行列中消散。第一个承受者抽取并失掉动静后,其别人就不克不及在失掉它。又称为点对点(pointtopoint).
关于activateConfig跟queue-example-service.xml有关,这里只需晓得destination就好了。从程序能够看到其接口为MessageListener可猜出这个程序卖力监听动静,收到动静后打印。就是如许:)
Client.java
packageorg.jboss.tutorial.mdb.client;
importjavax.jms.Queue;
importjavax.jms.QueueConnection;
importjavax.jms.QueueConnectionFactory;
importjavax.jms.QueueSender;
importjavax.jms.QueueSession;
importjavax.jms.TextMessage;
importjavax.naming.InitialContext;
publicclassClient
{
publicstaticvoidmain(String[]args)throwsException
{
QueueConnectioncnn=null;
QueueSendersender=null;
QueueSessionsession=null;
InitialContextctx=newInitialContext();
Queuequeue=(Queue)ctx.lookup("queue/tutorial/example");
//这里lookup的内容在queue-example-service.xml有界说jndi
QueueConnectionFactoryfactory=(QueueConnectionFactory)ctx.lookup("ConnectionFactory");
cnn=factory.createQueueConnection();
session=cnn.createQueueSession(false,//不必要事件
QueueSession.AUTO_ACKNOWLEDGE);//主动吸收动静
TextMessagemsg=session.createTextMessage("HelloWorld");
sender=session.createSender(queue);
sender.send(msg);
System.out.println("Messagesentsuccessfullytoremotequeue.");
}
}
Client在这里的实行按次是QueueConnectionFactory |
|