【问题标题】:how to configure jms queue inside blueprint.xml如何在 blueprint.xml 中配置 jms 队列
【发布时间】:2016-06-20 04:05:16
【问题描述】:

如何在 karaf 部署文件夹中的 blueprint.xml 中配置 jms 队列(在 karaf 中使用 activemq)..

下面是我的代码,它显示了 blueprint.xml 中 jms 连接的配置..

<bean id="activemqConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
    <property name="brokerURL" value="tcp://localhost:61616" />
    <property name="userName" value="karaf" />
    <property name="password" value="karaf" />
</bean>

<bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory">
    <property name="maxConnections" value="8" />
    <property name="connectionFactory" ref="activemqConnectionFactory" />
</bean>

<bean id="resourceManager" class="org.apache.activemq.pool.ActiveMQResourceManager" init-method="recoverResource">
    <property name="transactionManager" ref="transactionManager" />
    <property name="connectionFactory" ref="activemqConnectionFactory" />
    <property name="resourceName" value="activemq.localhost" />
</bean>

<reference id="transactionManager" interface="javax.transaction.TransactionManager" />

<service ref="activemqConnectionFactory" interface="javax.jms.ConnectionFactory">
    <service-properties>
        <entry key="name" value="connectionFactory" />
        <entry key="osgi.jndi.service.name" value="jms/connectionFactory" />
    </service-properties>
</service>

【问题讨论】:

    标签: jms activemq jndi karaf blueprint-osgi


    【解决方案1】:

    您无需像在 J2EE 中那样在 OSGi 中配置队列。您只需在纯 Java 中使用连接工厂或配置 camel-jms 组件。

    【讨论】:

    • 嗨,但是我们如何从 jndi 查找中获取队列对象?你能给我一些例子,说明你如何使用 jndi 查找在消费者端获取队列对象。这是我的消费者代码-
    • 上下文上下文 = new InitialContext(); ConnectionFactory connectionFactory = (ConnectionFactory) context.lookup("osgi:service/jms/connectionFactory");连接 = 连接工厂.createConnection();连接.start(); session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);队列队列 = session.createQueue("Request_Queue");
    • 这里我正在对队列名称“Request_Queue”进行硬编码,但我想通过使用 jndi 查找来选择相同的名称,如下所示 Destination queue = (Destination) context.lookup("MyQ​​ueue");
    • 您需要安装 Karaf jndi 功能,以便您拥有可用的 jndi 上下文。如果这是新代码,只需将 ConnectionFactory 注入您的类,并完全使用 jndi 查找绕过
    • 嗨,对不起,我没能找到你。您能否分享任何可以解决我的问题的链接...我的主要问题是我无法使用 jndi 查找获取队列对象..like (Destination queue = (Destination) context.lookup("MyQ​​ueue")) 我能够获得如下的 ConnectionFactory 对象 ConnectionFactory connectionFactory = (ConnectionFactory) context.lookup("osgi:service/jms/connectionFactory");但无法获取队列对象,因为它的对象没有向 jndi 注册。所以现在的重点是如何在 karaf 内部的 jndi 中注册队列对象。??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-04
    • 2020-03-04
    • 2011-04-30
    • 1970-01-01
    相关资源
    最近更新 更多