<bean id="openMQConnectionFactory"
class="com.is.br.util.OpenMqConnectionFactoryBean">
<property name="imqAddressList" value="mq://localhost:7676" />
<property name="imqDefaultUsername" value="admin" />
<property name="imqDefaultPassword" value="admin" />
</bean>
MessageProducer.java
public void sendMessage(最终字符串responseStream){
System.out.println("Enter into IsJmsProducer.sendMessage method");
try {
MessageCreator creator = new MessageCreator() {
public Message createMessage(Session session) {
ObjectMessage message = null;
try {
message = session.createObjectMessage(responseStream);
} catch (Exception e) {
System.out.println("Unable create a JMSMessage");
}
return message;
}
};
System.out.println("Sending message to destination: " + this.destination.toString());
this.jmsTemplate.setSessionAcknowledgeMode(Session.AUTO_ACKNOWLEDGE);
this.jmsTemplate.send(this.destination, creator);
System.out.println("SendMessage to queue successfully.");
} catch (Exception ex) {
System.out.println("SendMessage to queue Fail." + ex);
}
System.out.println("Exit from IsJmsProducer.sendMessage method");
}
SampleJMSConsumer.java
public class SampleJMSConsumer implements MessageListener {
@Override
public void onMessage(Message message) {
throw new RuntimeException();
}
}
public class SampleJMSConsumer implements MessageListener {
@Override
public void onMessage(Message message) {
ObjectMessage objectMessage = (ObjectMessage) message;
Object object;
try {
object = objectMessage.getObject();
if (object instanceof String) {
System.out.println("Message received - " + object.toString());
throw new JMSException("JMS exception");
}
message.acknowledge();
} catch (JMSException e) {
session.recover();
}
}
我认为这是设计好的,在调用onmessage时交付。如果您想对异常执行某些操作,您可以使用try catch来处理它。
假设消息再次放入队列,那么在使用时可能会遇到相同的异常。
国际海事组织的ack机制应是关于确保正确交付的。也许你想要的是一个reject机制,让prpoducerside发送一个新消息?
我可以在solace JMS队列中搜索任何特定的消息,然后在其他消息之前处理吗?我们有这样的功能w. r. t慰藉队列。
我是JMS新手,经过长时间的搜索,我搜索出了一个连接到JMS的代码,并发布了一条消息。 问题是我需要在远程队列中发布消息,但我不知道如何建立连接到它并发布消息。 服务器类型:TIBCO EMS 服务器主机:******。net 端口:**USername:user passsbrow:user123 队列:**。。。。顺序经营1. 我想建立连接,发布一条简单的消息,然后把它取回。请帮忙!提前谢谢
我最近将一台服务器从ActiveMQ从5.8升级到了最新版本(5.11.1)。从那以后,我偶尔注意到,消息将在特定队列中累积,而不会被删除。 我们的架构有一个生产者,一个消费者。我可以看到消费者仍然保持联系,但制作人的信息越来越多。我的解决方案是通过web控制台删除队列。之后,我立即看到消费者重新连接,消息再次开始处理。 如果相关,在这种情况下,生产者正在运行NMS。NET和消费者在Java 1.
但我的却不是这样。他们正在处理OK,并将正在编码的视频保存到正确的S3存储桶中。但它们没有像应该的那样删除队列项。 我试过用各种方法发送报头,包括... 我在页面上没有输出,但尝试调用了ob_start();在起始和ob_end_flush()处;在发送报头之后,甚至尝试在任何处理之前一开始就直接执行报头。没有任何工作,消息仍然在飞行中,并在其可见性超时结束后重新传递。 救命啊! 多谢了。
我设置了一个EJB项目,使用JMS将持久性实体对象发送到MDB。我使用JBoss EAP 7,使用Apache ActiveMQ作为消息传递提供程序。我像这样设置ConnectionFactory和队列: 这是我的消息生成器,它接收“Account”实体对象作为参数并将其发送到队列: EntityEnqueueBean。Java语言 MDB从队列接收消息并对其进行处理: java账户 不确定我做错