我成功地将消息发送到ReceiverQueue我的localhost Jboss服务器上的队列名称,如何检索我发送给它的消息,或者如何检查队列中是否有任何消息(如果有的话).或者我可以得到某种解释是什么是最好的方法.谢谢
也可以接受有效的发送/接收教程.任何能让我发送到队列并从该队列接收消息的东西都会得到接受的答案.
我正在使用Spring.
我想要一个使用bean注入的应用程序上下文来实现它的解决方案.
使用ejb 3.1,servlet 3.0(glassfish服务器v3)
场景:我有MDB,它监听jms消息并处理其他会话bean(无状态).Servelet注入jms资源.
问题1:为什么servlet在使用静态声明时不能注入jms资源?
@Resource(mappedName = "jms/Tarturus")
private static ConnectionFactory connectionFactory;
@Resource(mappedName = "jms/StyxMDB")
private static Queue queue;
private Connection connection;
Run Code Online (Sandbox Code Playgroud)
和
@PostConstruct
public void postConstruct() {
try {
connection = connectionFactory.createConnection();
} catch (JMSException e) {
e.printStackTrace();
}
}
@PreDestroy
public void preDestroy() {
try {
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
[#| 2010-05-03T15:18:17.118 + 0300 |警告| glassfish3.0 | javax.enterprise.system.container.web.com.sun.enterprise.web | _ThreadID = 35; _ThreadName =线程1; | StandardWrapperValve [WorkerServlet]:PWC1382:为servlet WorkerServlet分配异常com.sun.enterprise.container.common.spi.util.InjectionException:在com.sun上为类ua.co.rufous.server.services.WorkerServiceImpl创建托管对象时出错.企业.container.common.impl.util.InjectionManagerImpl.createManagedObject(InjectionManagerImpl.java:312)位于com.sun.enterprise.web.WebModule的com.sun.enterprise.web.WebContainer.createServletInstance(WebContainer.java:709). createServletInstance(WebModule.java:1937)at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1252)引起:com.sun.enterprise.container.common.spi.util.InjectionException:异常尝试注入未解决的Message-Destination-Ref ua.co.rufous.server.services.WorkerServiceImpl/queue @ …
似乎xmpp在聊天应用程序中用作协议,但JMS也支持多种接收器模式.
似乎JMS用于金融消息系统,但xmpp也可能支持持久性和可靠的交付.
有人可以概述这两个协议吗?
我刚刚开始使用Eclipse来测试一些jms代码.问题是...... Eclipse使用JRE标准库; 当我写代码时
import javax.jms.*;
没有lib被识别出来.所以我的问题是如何导入jms?
我有Camel和JMS的问题.
我的路线非常简单:
@Override
protected RouteBuilder[] createRouteBuilders() throws Exception {
createJmsComponent();
RouteBuilder route1 = new RouteBuilder() {
@Override
public void configure() throws Exception {
from("direct:startpoint")
.log("TO JMS: ${body}")
.to("jms://queue:QUEUE.NAME.OUT?replyTo=QUEUE.NAME.IN&replyToType=Exclusive")
;
}
};
RouteBuilder route2 = new RouteBuilder() {
@Override
public void configure() throws Exception {
from("jms://queue:QUEUE.NAME.IN?receiveTimeout=10000")
.log("FROM JMS: ${body}")
;
}
};
return new RouteBuilder[]{route1, route2};
}
Run Code Online (Sandbox Code Playgroud)
在日志中,我有我需要的东西:
2012-07-04 16:28:10,443 INFO route1 - TO JMS: message
2012-07-04 16:28:13,477 INFO route2 - FROM JMS: message
Run Code Online (Sandbox Code Playgroud)
但问题是我有异常:
2012-07-04 16:28:33,960 ERROR o.a.c.p.DefaultErrorHandler - Failed …Run Code Online (Sandbox Code Playgroud) 我正在尝试从Java与MQ建立连接。我正在使用来自IBM的以下示例代码,但是可能已经过时了。我该如何解决该问题/我缺少什么?
import com.ibm.mq.*; // Include the WebSphere MQ classes for Java package
import com.ibm.mq.jmqi.*;
import com.ibm.mq.constants.MQConstants;
public class MQSample
{
private String qManager = "your_Q_manager"; // define name of queue
// manager to connect to.
private MQQueueManager qMgr; // define a queue manager
// object
public static void main(String args[]) {
new MQSample();
}
public MQSample() {
try {
// Create a connection to the queue manager
qMgr = new MQQueueManager(qManager);
// Set up the options on the queue we …Run Code Online (Sandbox Code Playgroud) 我正在编写一个Java批处理,它是从队列(Oracle AQ)侦听消息并将它们发送到另一个队列(Tibco EMS),在那里它们由Tibco进程(BW)处理.
问题是Oracle AQ驱动程序会自动向消息添加一些属性(JMSXGroupID,JMSXGroupSeq),这些属性在由Tibco进程处理时会导致错误,因为它们具有错误值:JMSXGroupSeq应该是int但是设置为null.尝试解析消息属性时,Tibco出错了...
所以我想从所有消息中只删除这两个属性,但似乎jms api只提供了clearProperties()方法,但没有单个属性remove方法(我使用的是javax.jms.Message接口).
现在,我可以看到两个解决方案:
为这两个属性设置正确的值,因为我假设他们不会被Tibco进一步使用
读取所有属性并重建消息,而不会导致问题.但这种做法非常难看......
有没有人有其他解决方案?
我正在测试一些关于Paraya 5的JMS工作.具体来说是5.181.下面是我简单的无状态bean的代码. @JMSConnectionFactory失败!该JMSContext context变量始终null.然而@Resource(lookup = "jms/HelloWorldConnectionFactory")成功......任何想法为什么?我更喜欢使用JMSContext.
@Stateless
public class HelloWorldMessageSender {
@JMSConnectionFactory("jms/HelloWorldConnectionFactory")
protected JMSContext context;
@Resource(lookup = "jms/HelloWorldConnectionFactory")
protected ConnectionFactory connectionFactory;
@Resource(lookup = "jms/HelloWorldQueue")
protected Queue queue;
public String send() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS");
String txt = String.format("Hello world message %s", sdf.format(new Date()));
if (context != null) {
System.out.printf("Use JMSContext to produce%n");
context.createProducer().send(queue, txt);
}
if (connectionFactory != null) {
System.out.printf("Use ConnectionFactory to produce%n");
try (
Connection connection …Run Code Online (Sandbox Code Playgroud)