当前位置: 首页 > 面试题库 >

使用JMS发送消息挂在出口上

澹台镜
2023-03-14
问题内容

我正在尝试创建一个Java Application Client项目,该项目将JMS消息发送到Glassfish服务器上的队列。

问题在于,应用发送完消息后,它在应退出时挂起。该消息已成功传输,但是由于某种原因该应用程序没有退出。我已经尝试调试该应用程序,并且可以将其一直走到的结尾static void main,这就是它的挂起位置。

这是代码:

import javax.jms.*;
import javax.naming.InitialContext;


public class Main {

public void SendMessage() throws Exception {
    InitialContext ctx = new InitialContext();
    ConnectionFactory cf = (ConnectionFactory) ctx.lookup("jms/TestFactory");
    Queue queue = (Queue)ctx.lookup("jms/TestQueue");
    Connection conn = cf.createConnection();
    Session s = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
    MessageProducer prod = s.createProducer(queue);

    TextMessage txt = s.createTextMessage("testing");
    prod.send(txt);

    prod.close();
    s.close();
    conn.close();
}

public static void main(String[] args) throws Exception {
    Main m = new Main();
    m.SendMessage();
}

public Main() {
    super();
}

}

如何使其停止挂起?


问题答案:

长期以来,它一直是Glassfish中的一个错误。

这里记录了一个错误(在Sun App Server的版本9中,早于Glassfish所报告),但我怀疑会有很多重复的报告:

http://java.net/jira/browse/GLASSFISH-1429

我唯一已知的修复方法是System.exit(0)(在finally块中),它关闭所有线程。

太可怕了



 类似资料:
  • null 谁能给我一个向RabbitMQ发送消息的标准程序的例子。我正在使用Spring Boot,也可以使用它的特性。

  • 我想使用SpringBoot向ActiveMQ队列发送消息。应用程序应在发送后终止,但仍保持活动状态。 这是我的申请代码: 在没有任何父节点的情况下使用以下依赖项(Maven): 和一行

  • 如何延迟JMS消息发送或在不确定的时间内继续? 我使用的是Weblogic,正如您所知,在JMS发送之后,接收方将异步处理消息,但是,此时或有时外部资源还没有为接收方做好准备,因此,我想使用一些检查逻辑来延迟发送或处理消息。我猜例如:我将消息放入挂起队列,然后频繁检查资源可用性,一旦发送或继续消息? 大家都知道Weblogic是否支持这一点,或者如何实现它吗?

  • 我是Spring JMS的新手。我的应用程序是使用Spring Boot开发的,并部署在JBoss EAP7.2.0中。我有一个远程队列,它是一个活动的MQ Artemis队列,也嵌入在JBoss EAP7.2.0中。有人能建议我如何使用Spring Boot的JmsTemplate向远程JMS队列发送消息吗?基本上,我不知道应该如何定义远程connectionFactory来连接到远程队列。

  • 我们有一个Spring Boot应用程序,用于在另一个组件上执行负载测试。我们每分钟最多需要发送35000条JMS消息,因此我使用调度器每分钟运行一次任务。 问题是当我保持低强度时,它会设法在指定的时间间隔(一分钟)内发送消息。但是当强度很高时,发送消息块需要超过1分钟。对以下实现有任何建议吗? 调度程序类 用于发送消息的类

  • 我是JMS新手,经过长时间的搜索,我搜索出了一个连接到JMS的代码,并发布了一条消息。 问题是我需要在远程队列中发布消息,但我不知道如何建立连接到它并发布消息。 服务器类型:TIBCO EMS 服务器主机:******。net 端口:**USername:user passsbrow:user123 队列:**。。。。顺序经营1. 我想建立连接,发布一条简单的消息,然后把它取回。请帮忙!提前谢谢