草庐IT

java - 根据 "best efforts 1PC"模式实现Spring ChainedTransactionManager

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭3年前。Improvethisquestion尽力而为1PC在thispost中有很好的描述.为SpringSource工作的作者DavidSyer提供了一个ChainedTransactionManager的实现,它扩展了SpringAbstractPlatformTransactionManager类。这个特定的事务管理器可以启动n个事务,例如JDBC或JMSsession,并使用n个AbstractPlat

java - JMS 主题生存时间

我正在开发一个由一些模块组成的应用程序。在其中一个模块中,有人创建了一个主题生产者来发布关于主题的消息,但该模块没有主题消费者来使消息出队。主题生产者使用setTimeToLive()将生存时间属性设置为300000毫秒。我预计如果没有消费者,消息会在300000毫秒内过期并被释放。该应用程序部署在Tomcat6.0.36上,它使用外部ActiveMQ服务器来处理队列和主题。在主题设置下的MBeans选项卡中使用JavaVisualVM监视ActiveMQ我看到变量“EnqueueCount”在增长,但我不明白生存时间设置是否对这些消息生效。我希望看到计数器“ExpiredCount”

java - 如何使用故障转移传输处理 Activemq 的最大帧大小异常

我正在开发一个使用activemq交换消息的应用程序,有些消息太大以至于我想取消。我们使用两个ActiveMQ实例(主/从)的activemq故障转移传输。代理本身对消息有100mb的帧大小限制。问题是:如果我尝试发送大于100mb的消息,ActiveMQ服务器将关闭连接。此时,故障转移传输将尝试重新连接并再次发送消息,从而形成无限循环。客户端记录如下:2017-01-0509:19:11.910WARN14680---[0.1:61616@57025]o.a.a.t.failover.FailoverTransport:Transport(tcp://localhost:61616)

java - ActiveMQ JMS ping

ApacheActivemq5.2.0我的应用程序监听三个主题的消息并发送两个主题的消息。当我的应用程序被“webping”时,我想检查这些主题是否存在。我想知道这是否可能。这是我的观察,Advisorymessages可以用于此,但它们仅在生产者/消费者加入时才发送消息。这不是我想要的。我只想检查我是否可以向出站主题发送消息以及可以接收关于入站主题的消息。自定义心跳解决方案。我可以让每个生产者每5秒发送一次心跳消息,而监听器不处理心跳消息而是更新标志/时间戳。这样我就知道该主题已经启动并正在运行。ApacheActiveMQ中是否内置了类似心跳的功能?还是“针对某个主题的ping”?

java - JMS/HornetQ = 如何从客户端以编程方式创建 JMS 队列?

我知道可以通过hornetq-jmx.xml配置文件在HornetQ中创建JMS队列。但我想从客户端执行此操作?我试过:HornetQJMSClient.createQueue(queueName);但这似乎没有创建队列(在hornetq服务器上)?当我尝试为此队列创建消费者时,我总是会收到一个队列未知的异常。如果能提供有关如何从客户端创建JMS队列的建议,我将不胜感激。(我根本不想在客户端或服务器上使用JNDI,如果可能的话)。更新:我不介意使用任何HornetQs核心API(与JMSAPI相对)从客户端创建队列。我的问题是:是否有任何方法可以从客户端创建队列(使用JMSApis或使

java - 将 Spring MVC 的 Controller 与 HTTPServlet 解耦

我使用Spring已经有一段时间了,我意识到并非我的应用程序中收到的所有传入请求都是基于HTTP的。一些请求是基于电子邮件的,并且需要基于电子邮件的响应,其他请求是基于套接字的(当我的NOSQL存储中的值发生变化时接收通知)。尽管它们都或多或少地使用相同的MVC基础设施。因此,我认为重新构建应用程序以消除Controller与HTTP基础设施之间的耦合可能会有所帮助。调度程序不应再直接调用Controller方法,而是提取请求参数,并使用它们创建抽象消息(或事件),然后将其放在消息总线上。另一方面,每个Controller都会为不同的事件订阅其Action(Action类的实例-命令模

java - XA/JTA 事务 : JMS message arrives before DB changes are visible

上下文是:生产者(JTA事务PT)正在向JMS队列发送消息并进行数据库更新;consumer(JTAtransactionCT)在同一个队列上监听并在收到消息时读取DB;应用服务器-WebLogic,数据库-Oracle。我观察到,有时CT(还?)无法看到PT的数据库更改,如果已收到相应的JMS消息(PTpromise了吗?)。似乎JTA不能保证这种一致性(这在JurgenHoller的演讲“TransactionChoicesforPerformance”中也得到了证实)。避免此类问题的最佳方法是什么(明显的除外-不使用JTA)?谢谢。 最佳答案

java - 您能否在 Java 嵌入式代理中以编程方式更改队列的 "dead letter"处理?

背景在高层次上,我有一个Java应用程序,其中某些事件应触发要为当前用户执行的特定操作。但是,事件可能很频繁,Action总是一样的。因此,当第一个事件发生时,我想安排在不久的将来某个时间点(例如5分钟)采取行动。在那个时间窗口内,后续事件不应该采取任何行动,因为应用程序看到已经安排了一个行动。一旦预定的Action执行,我们就回到第1步,下一个事件再次开始循环。我的想法是通过在应用程序本身中嵌入一个内存中的ActiveMQ实例来实现这种过滤和限制机制(我不关心队列持久性)。我相信JMS2.0支持这种延迟传递的概念,延迟的消息位于“暂存队列”中,直到传递到真正的目的地为止。但是,我也相

java - 从 PL/SQL 调用/使用 JMS

是否可以从PL/SQL调用/使用JAVA消息服务(JMS)?我知道我们可以从pl/SQL调用java,但是调用java不同于调用JMS队列或JMS主题,因为JMS依赖于JNDI资源命名,当我们使用基于JNDI的资源时,我们首先必须将它们部署在一些然后使用J2EE容器。所以调用JMS总是涉及部署在一些J2EE容器上,然后利用它的功能。回到我之前提到的问题,我想从PL/SQL使用JMS以及它如何处理部署和基于JNDI的资源……? 最佳答案 您的问题中有两个问题需要单独解决:JNDI不,调用JMS服务不依赖于JNDI资源,也不需要将JMS

java - 与activemq的优先级

我们目前正在使用JMS和activemq(5.5.1)开发应用程序。我们想为某些消息定义更高的优先级,这将使它们首先被消费。设置生产者和消费者后(通过spring(3.1)JMSTemplate),优先级并没有完全发挥作用。事实上,当我们“关闭”消费者并发送一些消息时,优先级得到尊重,但是当我们在消费者开启时添加消息时,消息的接收顺序与发送顺序相同。配置非常简单:在activemq配置文件中激活了优先级:"prioritizedMessages="true"/>...并且在生产者模板配置中启用了QoS:要发送具有高优先级的消息,我们只需更改生产者端的模板优先级属性:template.s