我有一个 java 类,它使用来自队列的消息,将 HTTP 调用发送到一些 url。我在 google 和 stackoverflow 上进行了一些搜索(如果我错过了任何提及该问题的消息来源,我真的很抱歉),但找不到任何有关 setRollbackOnly 调用的详细信息。
我的问题是......如果我回滚,从队列中消耗的消息将阻塞队列的其余部分,并且将循环直到它被成功处理或者它将在当前队列的末尾重新排队?
我用于从队列中消费和发送 HTTP 调用的代码如下,整个应用程序在 Glassfish 服务器上运行:
公共类 RequestSenderBean 实现 MessageListener { @资源 私有 MessageDrivenContext mdbContext; 公共 RequestSenderBean(){} public void onMessage(最终消息消息) { 尝试 { 如果(对象消息的消息实例) { 字符串 responseOfCall=sendHttpPost(URL, PARAMS_FROM_MESSAGE); 如果(responseOfCall.startsWith(“成功”)) { //一切正常,做一些事情 } 否则如果(responseOfCall.startsWith(“失败”)) { //失败,做一些其他的事情 } } 捕获(最终异常 e) { e.printStackTrace(); mdbContext.setRollbackOnly(); } } }