小编H M*_*les的帖子

从JMS MessageListener发出回滚信号

我一直在使用JMS和ActiveMQ.一切都在创造奇迹.我不是用春天,也不是我.

界面javax.jms.MessageListener只有一种方法onMessage.在实现中,有可能抛出异常.如果事实上抛出异常,那么我说消息没有正确处理,需要重新尝试.所以,我需要ActiveMQ等待一段时间,然后重试.即我需要抛出异常来回滚JMS事务.

我怎样才能完成这样的行为?

也许ActiveMQ中有一些我无法找到的配置.

或者......也许可以取消MessageListener向消费者注册并自己消费消息,如下所示:

while (true) {
    // ... some administrative stuff like ...
    session = connection.createSesstion(true, SESSION_TRANSACTED)
    try {
        Message m = receiver.receive(queue, 1000L);
        theMessageListener.onMessage(m);
        session.commit();
    } catch (Exception e) {
        session.rollback();
        Thread.sleep(someTimeDefinedSomewhereElse);
    }
    // ... some more administrative stuff
}
Run Code Online (Sandbox Code Playgroud)

在几个线程中,而不是注册监听器.

或者......我可以以某种方式装饰/ AOP /字节操纵MessageListeners来自己做.

你会采取什么途径?为什么?

注意:我没有完全控制MessageListeners代码.

编辑 概念证明的测试:

@Test
@Ignore("Interactive test, just a proof of concept")
public void transaccionConListener() throws Exception {
    final AtomicInteger atomicInteger = …
Run Code Online (Sandbox Code Playgroud)

java messaging activemq-classic transactions jms

13
推荐指数
1
解决办法
2万
查看次数

独立Apache Qpid(amqp)Junit测试示例

有没有人有一个在独立的 junit测试中使用Apache Qpid的例子.

理想情况下,我希望能够动态创建一个队列,我可以在我的测试中放置/获取msgs.所以我没有在我的测试中测试QPid,我会使用集成测试,但是测试处理msgs的方法非常有用,不得不模拟一大堆服务.

java junit amqp qpid

10
推荐指数
2
解决办法
7740
查看次数

如何在emacs中绑定C-`(反引号)

我想绑定C-`(control-backquote)但我不能这样做.

性别

(global-set-key "\M-`" 'other-window)
Run Code Online (Sandbox Code Playgroud)

工作,而

(global-set-key "\C-`" 'other-window)
Run Code Online (Sandbox Code Playgroud)

没有.它失败并出现"字符串中的无效修饰符"错误.

emacs keyboard-shortcuts

6
推荐指数
1
解决办法
1249
查看次数