标签: jms

JMS协议是文本或二进制文件

我想知道什么是JMS协议?它是像http或二进制的文本基础协议?这些协议的层次结构是什么?(RMI> JMS或......)

如果您向我介绍学习这些协议层次结构的好参考,我将感谢您.

RGDS

java jms protocols

0
推荐指数
2
解决办法
4677
查看次数

使用jms发送xml有什么好处

在当前项目中,我们一直使用jms将xml作为textmessage发送.我不明白为什么他们不是简单地发送Objectmessage,为什么有处理xml的开销?

所以问题基本归结为为什么在jms中使用xml?

xml jms

0
推荐指数
1
解决办法
1845
查看次数

JMS测试 - JMSTemplate发送未执行

我有代码片段通过Spring JMSTemplate发送jms消息.为了测试方法我使用Mockito.

我的代码如下所示.... publishDialogueServiceMessage() - >

 brokerUrl = jmsQueueProperties.getProperty(MessageRouterConstants.JMS_QUEUE_URL);  
        LOG.info("The broker url is : {}", brokerUrl);  
        jmsTemplate.send(jmsQueueProperties.getProperty(MessageRouterConstants.QUEUE), new MessageCreator() {

            @Override
            public Message createMessage(Session session) throws JMSException {             
                ObjectMessage obj = session.createObjectMessage(serviceResponse);
                messageSent = true;
                return obj;
            }
        });
Run Code Online (Sandbox Code Playgroud)

在上面的代码我设置布尔变量true,检查是否发送了消息

我的测试看起来如下,

@Before
    public void setUp() throws Exception {

        connectionFactory = Mockito.spy(new ActiveMQConnectionFactory(
                "vm://localhost?broker.persistent=false"));
        conn = connectionFactory.createConnection();
        conn.start();       
    } 

@After
public void cleanUp() throws Exception{
    conn.stop();
}
Run Code Online (Sandbox Code Playgroud)


@Test
    public void testPublishDialogueServiceMessage()
    {
        ServiceResponse response = Mockito.mock(
                ServiceResponse.class, Mockito.withSettings()
                        .serializable());
        JmsTemplate mockTemplate …
Run Code Online (Sandbox Code Playgroud)

junit unit-testing jms mockito spring-jms

0
推荐指数
1
解决办法
6435
查看次数

JMS - 如何将消息发送回客户端?

这是我的客户端代码:

\n\n

公共类 ABCServlet 扩展 HttpServlet {

\n\n
protected void doGet(HttpServletRequest request,\n                 HttpServletResponse response){\n//do blah blah\nString msg = null;\n\njava.io.OutputStream os = response.getOutputStream();\njava.io.ObjectOutputStream oos = new java.io.ObjectOutputStream(os);\noos.writeObject(msg);\nmsg = null;\noos.flush();\noos.close();\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我不知道如何使用上面的代码我的监听器被启动 -

\n\n
public class ABCListener implements MessageListener {\n\n@Override\npublic void onMessage(Message arg0) {\n AbstractJDBCFacade fa\xc3\xa7ade = null;\n try{\n    fa\xc3\xa7ade = something;\n    throw new UserException();\n }catch(UserException ex){\n    log.error("ABC Exception " + ex);\n }\n
Run Code Online (Sandbox Code Playgroud)\n\n

配置 :

\n\n
<bean id="jmsConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">....\n\n<bean id="jmsQueue" class="org.springframework.jndi.JndiObjectFactoryBean">\n\n<bean id="listenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer102">\n
Run Code Online (Sandbox Code Playgroud)\n\n

我有 3 个问题:\n1. 如果不显式地将其放入队列,如何调用侦听器?\n2. 当 onMessage 方法抛出 …

jms objectoutputstream

0
推荐指数
1
解决办法
4256
查看次数

Tibjms javax.jms.JMSException:服务器未知连接

我使用Tibjms jar 进行 JMS 连接,在正常情况下工作正常,但如果与 jms 提供程序的连接丢失然后又恢复,我就会遇到问题。为了重现该问题,我执行了以下步骤 -

  1. 连接内网并启动服务器。工作正常。

  2. 断开与内联网的连接。它开始尝试重新连接服务器。美好的。

  3. 再次连接内网。它抛出未知异常并且再也不会连接。问题。

所以,我的问题是“javax.jms.JMSException:服务器未知的连接”,它并没有告诉我太多信息,您可以在日志末尾看到它。

您可以从以下日志中看到它 -

2017-10-13 15:40:52,333 [     http-nio-8080-exec-2] INFO  org.springframework.web.servlet.DispatcherServlet - FrameworkServlet 'dispatcherServlet': initialization completed in 37 ms
2017-10-13 15:41:29,293 [k Reader (Server-3285015)] ERROR com.example.jms.PaxJmsClient - Exception received from jms
javax.jms.JMSException: Disconnected from ssl://10.10.10.10:5071, will attempt to reconnect
    at com.tibco.tibjms.TibjmsConnection._invokeOnExceptionCallback(TibjmsConnection.java:2132)
    at com.tibco.tibjms.TibjmsConnection._reconnect(TibjmsConnection.java:1912)
    at com.tibco.tibjms.TibjmsConnection$ServerLinkEventHandler.onEventReconnect(TibjmsConnection.java:387)
    at com.tibco.tibjms.TibjmsxLinkTcp._doReconnect(TibjmsxLinkTcp.java:598)
    at com.tibco.tibjms.TibjmsxLinkTcp$LinkReader.work(TibjmsxLinkTcp.java:317)
    at com.tibco.tibjms.TibjmsxLinkTcp$LinkReader.run(TibjmsxLinkTcp.java:259)
2017-10-13 15:42:29,334 [k Reader (Server-3285015)] ERROR com.example.jms.PaxJmsClient - Exception received from jms
javax.jms.JMSException: Reconnecting to ssl://11.11.11.11:5071, attempt 1 out …
Run Code Online (Sandbox Code Playgroud)

java tibco jms tibco-ems

0
推荐指数
1
解决办法
2563
查看次数

MQ:已达到通道的最大实例数

我有一个连接到MQ的Java客户端,队列管理器抱怨The maximum number of instances, 50, of channel 'CHAN' was reached

在哪里以及如何在客户端代码或属性中找到由Java客户端创建的实例数?

java spring jms ibm-mq

0
推荐指数
1
解决办法
134
查看次数

DefaultJmsListenerContainerFactory配置进程并发

我正在为 JmsFactory 配置并发性以便使用我的队列。

我这样做了:

  @Bean(name = "myFactory")
  public DefaultJmsListenerContainerFactory sqsFactory(SQSConnectionFactory connectionFactory,
      CustomJmsListenerConfigurer configurer) {
    DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
    configurer.configure(factory, connectionFactory);
    factory.setConcurrency("1-3");
    return factory;
  }
Run Code Online (Sandbox Code Playgroud)

我看到DefaultJmsListenerContainerFactory.setConcurrency后面调用了DefaultMessageListenerContainer。

我在我的应用程序中配置了 2 个队列,我正在使用 spring boot:

@JmsListener(destination = "queue1", containerFactory = "myFactory")
@JmsListener(destination = "queue2", containerFactory = "myFactory")
Run Code Online (Sandbox Code Playgroud)

我正在阅读 spring 文档并遇到一些方法,现在我有一些疑问。

1 - 有什么区别:

setConcurrency(String concurrency)
setConcurrentConsumers(int concurrentConsumers)
Run Code Online (Sandbox Code Playgroud)

即使阅读文档,我也不理解其中的区别以及此配置如何改变应用程序行为。我认为 setConcurrency 应该是每个 @jmsLister 用于从队列获取消息的线程数...您能解释一下我有 100 条消息排队(每个配置队列)的配置映像示例吗?

2 - setMaxMessagesPerTask(int maxMessagesPerTask)

如果队列中有 100 条消息,并发数 = 3,并且该数字为 10(默认),那么行为是什么?

java spring jms spring-jms

0
推荐指数
1
解决办法
4952
查看次数

更新到 Spring Boot 3 后 JMS 不工作(以及 ConnectionFactory 从 javax 到 jakarta)

从 SpringBoot v.2.5.5 更新到 v3.1.0 后,还需要ConnectionFactory从更新javax.jms.ConnectionFactoryjakarta.jms.ConnectionFactory。我没有改变任何其他东西。不幸的是现在我收到这样的错误: ERROR - Could not refresh JMS Connection for destination 'tServerEvent' - retrying using FixedBackOff{interval=5000, currentAttempts=0, maxAttempts=unlimited}. Cause: Could not connect to broker URL: tcp://localhost:61616. Reason: java.net.ConnectException: Connection refused: no further information

我调查了它并与旧的进行了比较javax.ConnectionFactory,似乎brokerUrl它们的默认值是不同的

因为javax.jms.ConnectionFactory它是:vm://localhost?broker.persistent=false 因为jakarta.jms.ConnectionFactory它是:tcp://localhost:61616

即使我手动设置经纪人网址,如下所示:

spring:
  activemq:
    broker-url: vm://localhost?broker.persistent=false
Run Code Online (Sandbox Code Playgroud)

它仍然无法工作,错误是: Cause: Could not create Transport. Reason: java.io.IOException: Transport scheme NOT recognized: [vm]

我不知道为什么 jakarta.ConnectionFactory 和旧 javax.ConnectionFactory 的默认brokerUrl 不同,也不知道如何成功运行我的应用程序。如果您能给我一些提示,我将不胜感激。 …

java jms spring-boot

0
推荐指数
1
解决办法
5628
查看次数