Solace-jms发送message

目录

准备工作

 引入solace-jms依赖

配置solace信息

配置ConsumerConfiguration

 配置ProducerConfiguration 

发送message到Queue / Topic

监听queue


准备工作

创建Queue: tutorial/test/queue

创建Queue: tutorial/test/queue2  订阅Topic xxxxxxxx/TRANSACTION/V01/N/./*>

 

 引入solace-jms依赖

<dependency>
	<groupId>com.solace.spring.boot</groupId>
	<artifactId>solace-jms-spring-boot-starter</artifactId>
	<version>3.2.1</version>
</dependency>

配置solace信息

solace:
  jms:
    host: xxxxxx:55555
    msg-vpn: xxxxx
    client-username: xxxxx
    client-password: xxxxx

配置ConsumerConfiguration

@EnableJms
@Configuration
public class ConsumerConfiguration {

    private static final Logger logger = LoggerFactory.getLogger(ConsumerConfiguration.class);

    // Example configuration of the ConnectionFactory: we instantiate it here ourselves and set an error handler
    @Bean
    public DefaultJmsListenerContainerFactory cFactory(ConnectionFactory connectionFactory, DemoErrorHandler errorHandler) {
        DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
        factory.setConnectionFactory(connectionFactory);
        factory.setErrorHandler(errorHandler);
        return factory;
    }

    @Service
    public class DemoErrorHandler implements ErrorHandler{   

        public void handleError(Throwable t) {
        	ByteArrayOutputStream os = new ByteArrayOutputStream();
        	PrintStream ps = new PrintStream(os);
        	t.printStackTrace(ps);
        	try {
				String output = os.toString("UTF8");
	            logger.error("============= Error processing message: " + t.getMessage()+"\n"+output);
			} catch (UnsupportedEncodingException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
 
        }
    }

}

 配置ProducerConfiguration 

@Configuration
public class ProducerConfiguration {

  @Autowired private ConnectionFactory connectionFactory;

  // Example use of CachingConnectionFactory for the producer
  @Bean
  public JmsTemplate jmsQueueTemplate() {
    CachingConnectionFactory ccf = new CachingConnectionFactory(connectionFactory);
    return new JmsTemplate(ccf);
  }

  @Bean
  public JmsTemplate jmsTopicTemplate() {
    CachingConnectionFactory ccf = new CachingConnectionFactory(connectionFactory);
    JmsTemplate jmsTemplate = new JmsTemplate(ccf);
    jmsTemplate.setPubSubDomain(true);
    return jmsTemplate;
  }
}

发送message到Queue / Topic

@RestController
@RequestMapping("/message")
public class MessageController {
  private static final Logger logger = LoggerFactory.getLogger(MessageController.class);

  @Autowired
  private JmsTemplate jmsQueueTemplate;

  @Autowired
  private JmsTemplate jmsTopicTemplate;

  @GetMapping("/queue")
  ResponseEntity<String> sendToQueue() {
    String msg = "Hello World,  message from queue";
    logger.info("============= Sending:  " + msg);
    this.jmsQueueTemplate.convertAndSend("tutorial/test/queue", msg);
    return ResponseEntity.ok("success");
  }

  @GetMapping("/topic")
  ResponseEntity<String> sendToTopic() {
    String msg = "Hello World, message from topic";
    logger.info("============= Sending:  " + msg);
    this.jmsTopicTemplate.convertAndSend(
        "xxxxxxxx/TRANSACTION/V01/N/./TEST", msg);
    return ResponseEntity.ok("success");
  }
}

监听queue

@Component
public class MessageConsumer {

    private static final Logger logger = LoggerFactory.getLogger(MessageConsumer.class);

    @JmsListener(destination = "tutorial/test/queue")
    void processMsgFromQueue(Message msg) {
        StringBuffer msgAsStr = new StringBuffer("============= Received \nHeaders:");
        MessageHeaders hdrs = msg.getHeaders();
        msgAsStr.append("\nUUID: "+hdrs.getId());
        msgAsStr.append("\nTimestamp: "+hdrs.getTimestamp());
        Iterator<String> keyIter = hdrs.keySet().iterator();
        while (keyIter.hasNext()) {
            String key = keyIter.next();
            msgAsStr.append("\n"+key+": "+hdrs.get(key));
        }
        msgAsStr.append("\nPayload: "+msg.getPayload());
        logger.info(msgAsStr.toString());
    }

    @JmsListener(destination = "tutorial/test/queue2")
    void processMsgFromTopic(Message msg) {
        StringBuffer msgAsStr = new StringBuffer("============= Received \nHeaders:");
        MessageHeaders hdrs = msg.getHeaders();
        msgAsStr.append("\nUUID: "+hdrs.getId());
        msgAsStr.append("\nTimestamp: "+hdrs.getTimestamp());
        Iterator<String> keyIter = hdrs.keySet().iterator();
        while (keyIter.hasNext()) {
            String key = keyIter.next();
            msgAsStr.append("\n"+key+": "+hdrs.get(key));
        }
        msgAsStr.append("\nPayload: "+msg.getPayload());
        logger.info(msgAsStr.toString());
    }
}

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值