在Solace主题上发布JMS消息

时间:2018-06-20 06:04:33

标签: publish jms-topic solace

我在Solace服务器主题上发布JMS消息时遇到问题。 实际上,我们可以成功使用jmsTemplate.send()方法发送消息。 但是无法在solace客户端GUI上看到消息计数。 下面是我的安慰配置。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
    xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
                           http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.1.xsd
                           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
                           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd">

    <bean
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:messaging.properties</value>
            </list>
        </property>
        <property name="ignoreResourceNotFound" value="true" />
        <property name="ignoreUnresolvablePlaceholders" value="true" />
    </bean>

    <!-- Solace Broker Configuration Details -->

    <bean id="solaceJndiTemplate" class="org.springframework.jndi.JndiTemplate"
        lazy-init="default" autowire="default">
        <property name="environment">
            <map>
                <entry key="java.naming.provider.url" value="${solace.url}" />
                <entry key="java.naming.factory.initial"
                    value="com.solacesystems.jndi.SolJNDIInitialContextFactory" />
                <entry key="java.naming.security.principal" value="${solace.userName}" />
                <entry key="java.naming.security.credentials" value="${solace.passWord}" />
            </map>
        </property>
    </bean>
    <bean id="solaceConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean"
        lazy-init="default" autowire="default">
        <property name="jndiTemplate" ref="solaceJndiTemplate" />
        <property name="jndiName" value="${solace.jndiName}" />
    </bean>
    <!-- <bean id="solaceCachedConnectionFactory"
        class="org.springframework.jms.connection.CachingConnectionFactory">
        <property name="targetConnectionFactory" ref="solaceConnectionFactory" />
        <property name="sessionCacheSize" value="10" />
    </bean> -->
    <bean id="destination" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiTemplate" ref="solaceJndiTemplate" />
        <property name="jndiName" value="${solace.topic}" />
    </bean>

    <!-- <bean id="topicDestination" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiTemplate" ref="solaceJndiTemplate" />
        <property name="jndiName" value="${solace.topic}" />
    </bean> -->

    <bean id="solaceQueueJmsTemplate" class="org.springframework.jms.core.JmsTemplate">
        <property name="connectionFactory" ref="solaceConnectionFactory" />
        <property name="defaultDestination" ref="destination" />
        <property name="deliveryPersistent" value="false" />
        <property name="explicitQosEnabled" value="true" />
         <property name="pubSubDomain" value="false"/>
    </bean>

    <bean id="solaceTopicJmsTemplate" class="org.springframework.jms.core.JmsTemplate">
        <property name="connectionFactory" ref="solaceConnectionFactory" />
        <property name="defaultDestination" ref="destination" />
        <property name="deliveryPersistent" value="false" />
        <property name="explicitQosEnabled" value="true" />
         <property name="pubSubDomain" value="true"/>
    </bean>

    <bean id="solaceQueueBroker" class="com.isc.common.messaging.SolaceUtilityHelper">
        <property name="jmsTemplate" ref="solaceQueueJmsTemplate" />
    </bean>

    <bean id="solaceTopicBroker" class="com.isc.common.messaging.SolaceUtilityHelper">
        <property name="jmsTemplate" ref="solaceTopicJmsTemplate" />
    </bean>

    <bean id="messageBroker" class="com.isc.common.messaging.SolaceUtilityHelper">
        <property name="activeBroker" value="${active.broker}" />
    </bean>


    <!-- <bean id="messageConsumer" class="com.isc.common.messaging.MessageConsumer">
    </bean>
    <bean id="jmsContainer"
        class="org.springframework.jms.listener.DefaultMessageListenerContainer">
        <property name="connectionFactory" ref="solaceCachedConnectionFactory" />
        <property name="destination" ref="destination" />
        <property name="messageListener" ref="messageConsumer" />
    </bean> -->
</beans>

请问有人可以建议我解决这个问题。

先谢谢了。 索拉玛哈真(

1 个答案:

答案 0 :(得分:0)

根据您的评论,您似乎正在发布到某个主题,但是没有配置用于假脱机消息的终结点。

有关如何配置队列以后台处理发布到主题的消息的详细信息,请参见Adding Topic Subscriptions to Queues

要确认,您可以验证消息是否在“无订阅匹配日志”下列出。在SolAdmin中,您可以通过转到“日志和诊断”并选择“无订阅匹配日志”来查看它们。与此相对应的CLI命令为show log no-subscription-match

此外,您的应用程序连接的统计信息还将显示接收和发送的消息数,以及任何丢弃原因。可以通过转到“客户端”选项卡并选择“客户端”视图来查看。然后,双击您的客户端,然后转到“统计信息”。或者,此的CLI命令为show client <your-client-name> message-vpn <your-vpn-name> stats