草庐IT

java - 基于中间件的 HTTP/JMS 混合 SOAP 的请求-回复模型

我们的一个产品实现了以下单向网络服务结构:Server在此模型中,客户端通过HTTP将SOAP消息发送到我们的中间件(ProgressSonicMQ)。消息被SonicMQ推送到JMS队列中,我们的服务器从那里获取它们。但是,如您所见,服务器不会向客户端发送响应(异步JMS)。我们想为这个模型实现一个响应channel。通常建议的解决方案是在中间件中创建一个临时的replyTo-queue(动态),允许服务器向该队列发送响应。然后,客户端可以获取响应并关闭replyTo-queue。这听起来很方便,但不幸的是,我们的客户端通过纯HTTP而不是JMS进行操作,因此他们的客户端无法轻松设置

java - 将 JMS 队列添加到 Jboss 7

我想尝试了解JMS的工作原理。我正在阅读教程并创建了生产者/消费者java类,但不确定如何创建JMS队列。我下载了jboss-as-web-7.0.2.Final,我相信它有HornetQ。到目前为止,我一无所获,因为我只是想不出如何添加队列。根据这份文件https://docs.jboss.org/author/display/AS7/Messaging+configuration,可以使用add-jms-queue命令添加队列。我试过了,但它会产生错误。[standalone@localhost:9999/]add-jms-queue--name=sampleQueue--entr

java - 如何使用 HornetQ 延迟 JMS 消息的传递?

基本上,我想要HornetQ相当于:message.setLongProperty("JMS_JBOSS_SCHEDULED_DELIVERY",System.currentTimeMillis()+processingDelayInMS); 最佳答案 使用HornetQscheduleddeliveryproperty:“_HQ_SCHED_DELIVERY”(或常量Message.HDR_SCHEDULED_DELIVERY_TIME)。 关于java-如何使用HornetQ延迟JM

java - 如何限制 JMS DefaultMessageListenerContainer 重试消息的次数?

我正在使用SpringJMS连接到WebsphereMQ服务器。我实现了SessionAwareListener接口(interface)来创建自定义监听器,为业务逻辑重用旧代码。在测试时,监听器抛出StringIndexOutOfBoundsException,但我未能捕捉到。但是,我在日志中看到以下内容打印了大约32次,然后DMLC停止了。WARN-ExecutionofJMSmessagelistenerfailed有没有办法控制DMLC重试消息的频率,以及如何处理未捕获的异常? 最佳答案 您始终可以检查JMSDelivery

java - 为什么 JMS session 对象不是线程安全的?

为什么JMS规范的设计方式是当创建session的连接对象是线程安全的(由线程共享)时,session对象不能被并发线程使用? 最佳答案 JMSsession对象通常用于事务。而且我们都知道事务是线程特定的,不能跨线程。因此,事务处理的JMSsession不能跨线程使用。我相信出于这个原因,JMS规范说session不是线程安全的。 关于java-为什么JMSsession对象不是线程安全的?,我们在StackOverflow上找到一个类似的问题: https

java - 为什么我对 QueueConnectionFactory 的 JNDI 查找返回空值?

我正在尝试通过Geronimo的JNDI查找QueueConnectionFactory和Queue。Queue返回正常,但QueueConnectionFactory查找始终返回null。它不会抛出NamingException,如果JNDI名称不正确,这正是我所期望的。谁能看出我做错了什么?下面的测试代码输出:truefalseimportjavax.jms.Queue;importjavax.jms.QueueConnectionFactory;importjavax.naming.InitialContext;importjavax.naming.NamingException

java - 对何时使用 JMS(或一般的队列)与数据库感到困惑

当您将消息存储在队列中时,它不是更多的元数据信息,以便从队列中拉出的人知道如何处理数据吗?队列中的实际信息并不总是包含所有信息。假设您有一个像Twitter这样的应用程序,每当有人发布消息时,您仍然需要将实际的消息文本存储在数据库中,对吗?队列更多地用于向其他订阅者广播新消息已到达,然后这些服务可以采取进一步的行动。或者您真的可以将推文文本也存储在队列中吗?(或者你可以,但那会很傻吗?)队列消息是否可以有状态字段,订阅者可以在处理他们的工作流部分时更改哪些字段?(或者您会在数据库中这样做吗?)只是想弄清楚什么时候应该使用队列而不是数据库。 最佳答案

javax.jms.MessageConsumer 在消费者关闭时挂起接收

根据javadoc,如果我在javax.jms.MessageConsumer上调用receive(),它将无限期阻塞,直到生成消息或直到消息使用者关闭。我有一个正在调用receive()的线程。作为线程关闭的一部分,我正在调用close(),但消费者仍然阻塞在receive()中,因此线程不会关闭。我的代码的要点是:publicStringreceiveMessage(){......System.out.println("Abouttoreceive")TextMessagemessage=(TextMessage)consumer.receive();System.out.pri

java - JMS 队列和主题命名约定的建议

对于较大的JMS部署,您对命名约定的最佳实践建议是什么?目前我们正在遵循SunDeveloperNetworkBlueprints中的建议.例如:jms/[Queue|Topic]随着我们在系统中获得越来越多的队列和主题,我担心会扩展它。我特别想听听使用分层命名的经验以及人们如何决定他们的命名约定。 最佳答案 我以前工作的一家公司非常依赖用于SOA的JMS。他们也热衷于领域驱动设计,因此他们按业务领域以//的格式组织服务。例如,price/compute-foobar-maintenance-fee/1.0。该项目不是名称的一部分,

java - 架构师迫切希望使用 SOAP over JMS

我过去曾使用JMS构建应用程序并且效果很好。现在我与喜欢使用规范的架构师一起工作:SOAPoverJavaMessageService1.0。这个规范接缝过于复杂。我没有看到很多实现(除了插入规范的供应商之外)。这里有人在生产环境中使用这个规范吗?使用此规范的主要好处是什么?链接:http://www.w3.org/TR/2009/CR-soapjms-20090604/ 最佳答案 我在使用基于JMS的SOAP时运气不佳。如果它用于即发即弃操作(WSDL中没有定义响应消息),它确实有一定意义。在这种情况下,您可以使用WSDL生成客户