当前位置: 首页 > 知识库问答 >
问题:

并发处理- JMS

微生宝
2023-03-14

我看到公司中的一个应用程序使用 JMS 进行并发调用。该应用程序是在Spring编写的Web服务。这将进行许多外部调用。当收到操作请求时,它会将许多消息发布到JMS队列,MDB处理这些消息。然后,应用程序整理所有响应,将其映射回其数据模型并返回响应。我过去曾使用JMS进行火灾和遗忘调用,但我无法弄清楚应用程序如何等待来自JMS队列的响应。请问您能解释一下是否有办法吗?

共有1个答案

端木涵润
2023-03-14

Vicky,一种方法是使用业务关联。真正意义上的消息传递是异步的。但是有可能使用“伪同步”呼叫。方法是在提交请求时使用一个ID,并在同一个线程上用一个JMSMessageSelector(具有相同的ID)轮询响应。此外,如果有多个后端,您还可以进行聚合,这也是可能的,方法是在聚合和发送响应之前,在消息中包含一个部件id,并进行轮询以查看是否所有“部件都已组装”。JMS消息选择器。这里还记录了模式的高级概述

 类似资料:
  • 如果一个属性被配置为并发标记,那么在保存属性记录的期间 EF 将会制止其他用户修改该属性在数据库中的值。 提示 你可以在 GitHub 上查阅当前文章涉及的代码样例。 EF Core 是如何处理并发的 关于 Entity Framework Core 是如何处理并发的详细描述请查阅 并发标记。 解决并发冲突 解决并发冲突需要使用算法来将当前用户的挂起更改与数据库变更合并。具体的方法根据不同的应用程

  • 1.【强制】 获取单例对象需要保证线程安全,其中的方法也要保证线程安全。 说明: 资源驱动类、工具类、单例工厂类都需要注意。 2.【强制】 创建线程或线程池时请指定有意义的线程名称,方便出错时回溯。 正例: public class TimerTaskThread extends Thread { public TimerTaskThread() { super.setN

  • 并发请求处理 我创建了一个服务器,并使用s.listenandserve()来处理请求。据我所知,这些请求是同时送达的。我使用一个简单的处理程序来检查它: 我看到,如果我发送了几个请求,我将看到所有的“1”出现,只有在一秒钟后所有的“2”出现。但是如果删除Hibernate行,我会看到程序在完成前一个请求之前从不启动请求(输出为1 2 1 2 1 2...)。所以我不明白,如果它们是并发的还是不是

  • 问题内容: 我知道MySQL中并发SELECT和INSERT存在一个问题。但是,我的问题是,如果我与MySQL建立两个连接并继续使用这两个连接来加载数据,MySQL是同时获取数据还是在加载另一个之前等待一个完成? 我想知道两种情况下MySQL的行为。就像当我尝试在打开单独的连接时尝试同时在同一张表或不同表中加载数据时一样。 问题答案: 如果要创建与数据库的新连接并从两个链接执行插入,那么从数据库的

  • 问题内容: 当前,我们在数据层中使用JDBC,并计划用hibernate代替它。我是Hibernate的新手,不确定Hibernate如何处理并发。如果我们使用spring进行事务管理,有人可以解释一下我如何处理并发更新:通过hibernate(在内存中进行hibernate的自动版本管理),或者我必须将version列放入数据库中以手动处理并发更新。 问题答案: 无论你是否使用Spring进行事

  • 问题内容: 我正在编写一个程序来处理文本文件中的数百万行,500k耗时5秒来验证文件,我想加快速度。 我想遍历所有项目并异步处理它们中的x,然后等待响应以查看是否应该继续。 我已经写了一些伪代码,我不确定我写的内容是否有意义,这看起来似乎很复杂,是否有更简单,更优雅的方法来做到这一点。 问题答案: 您的代码看起来不错,您实现了Go模式中常用的代码。缺点是- 您为每个项目生成工作程序goroutin