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

在Open Liberty中编写Apache Qpid for Azure服务总线激活规范的正确方法

权承
2023-03-14

我的server.xml如下所示:

<jndiObjectFactory id="servicebusfactory" libraryRef="qpidlibsid"
   className="org.apache.qpid.jms.jndi.JNDIReferenceFactory" 
   objectClassName="org.apache.qpid.jms.JmsConnectionFactory">
</jndiObjectFactory>

<jndiReferenceEntry id="qpidconnectionfactory" 
  jndiName="jms/ServiceBus" 
  factoryRef="servicebusfactory">
  <properties remoteURI="amqps://xxx.servicebus.windows.net?amqp.idleTimeout=120000&amp;amqp.traceFrames=true&;jms.username=xxxx&amp;jms.password=xxx"/>
</jndiReferenceEntry>

<jndiObjectFactory id="queuefactory" libraryRef="qpidlibsid"
  className="org.apache.qpid.jms.jndi.JNDIReferenceFactory" 
  objectClassName="org.apache.qpid.jms.JmsQueue">
</jndiObjectFactory>

<jndiReferenceEntry id="myqueue" 
  jndiName="jms/myqueue" 
  factoryRef="queuefactory">
   <properties address="myqueue" />
</jndiReferenceEntry>

使用上面的服务器配置,我可以将消息发送到服务总线队列(使用JMS消息生成器)。

问题是使用消息驱动bean接收消息。我尝试了以下配置:

@MessageDriven(name = "processorMDB", activationConfig = {
    @ActivationConfigProperty(propertyName = "destinationLookup", propertyValue = "jms/myqueue"),
    @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
    @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
    @ActivationConfigProperty(propertyName = "connectionFactoryLookup", propertyValue = "jms/ServiceBus"),
})

共有1个答案

虞滨海
2023-03-14

我从没让MDB工作过。

我在JMSConsumer上使用了一个普通的MessageListener,尽管Javadoc声明如下:

在Java EE web或EJB应用程序中不得使用此方法。这样做可能会导致抛出JMSRuntimeException,但这并不保证。

@Singleton
@Startup
public class CreditProcessorBeanListener {

@Resource(name = "jms/ServiceBus")
private ConnectionFactory connectionFactory;

@Resource(name = "jms/myqueue")
private Queue myqueue;
private JMSContext context;
private JMSConsumer consumer;


@PostConstruct
private void init() {
    initListener();
}

private void initListener() {
    context = connectionFactory.createContext();
    consumer = context.createConsumer(myqueue);
    consumer.setMessageListener(new MyListener());

}

@PreDestroy
private void destroy() {
    consumer.close();
    context.close();
}
}
 类似资料:
  • 这里我将描述文档编写规范格式,将从一下几个方面进行详细的介绍。 标题 文本 段落 数字 标点符号 文档体系 标题 定义文档中标题的使用规范。 层级 一级标题:文章的主标题 二级标题:文章的主干章节标题 三级标题:章节下的分支标题 四级标题:属三级标题内的分支标题 示例 # 一级标题 ## 二级标题 ### 三级标题 #### 四级别标题 原则 一级标题,全文仅能有一个一级标题,在本站中每篇文章的

  • 问题内容: 假设我要编写以下HQL查询: 将其编写为参数化查询的正确方法是什么,例如 问题答案: 我不确定如何使用位置参数来执行此操作,但是如果可以使用命名参数而不是位置参数,则可以将命名参数放在方括号内,并且可以使用Query接口中的setParameterList方法将值列表绑定到此参数。

  • 我定义了一个Xtext语法规则来解析一个简单的时间戳,比如YYYY-MM-DDTHH-MM-SS,但是,当我发送类似于

  • Sass 的终极目标是解决 CSS 的缺陷。如我们所知,CSS 并不是一个完美的语言。CSS 虽然简单易学,却也能迅速制造严重的混淆,尤其是在工程浩大的项目中。

  • 带有服务工作者的网站,托管https://121eddie.github.io/并在Chrome 66.0中运行。3359.181 /索引。html在每次加载时正确跟踪以下注册 }); 第一次运行时,/serviceWorker。js执行“激活”事件,正确获取缓存名称并缓存文件 在第二次运行时,不会触发“激活”(没有日志跟踪,没有获取)。 在第三次运行中,甚至不再触发“抓取”。这意味着脱机请求不被