我有一个 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();
}
}
}