javax.jms.Message.setJMSCorrelationID()方法的使用及代码示例

x33g5p2x  于2022-01-24 转载在 其他  
字(10.3k)|赞(0)|评价(0)|浏览(275)

本文整理了Java中javax.jms.Message.setJMSCorrelationID()方法的一些代码示例,展示了Message.setJMSCorrelationID()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Message.setJMSCorrelationID()方法的具体详情如下:
包路径:javax.jms.Message
类名称:Message
方法名:setJMSCorrelationID

Message.setJMSCorrelationID介绍

[英]Sets the correlation ID for the message.

A client can use the JMSCorrelationID header field to link one message with another. A typical use is to link a response message with its request message.

JMSCorrelationID can hold one of the following:

  • A provider-specific message ID
  • An application-specific String
  • A provider-native byte[] value

Since each message sent by a JMS provider is assigned a message ID value, it is convenient to link messages via message ID. All message ID values must start with the 'ID:' prefix.

In some cases, an application (made up of several clients) needs to use an application-specific value for linking messages. For instance, an application may use JMSCorrelationID to hold a value referencing some external information. Application-specified values must not start with the 'ID:' prefix; this is reserved for provider-generated message ID values.

If a provider supports the native concept of correlation ID, a JMS client may need to assign specific JMSCorrelationID values to match those expected by clients that do not use the JMS API. A byte[] value is used for this purpose. JMS providers without native correlation ID values are not required to support byte[] values. The use of a byte[] value for JMSCorrelationID is non-portable.
[中]设置消息的相关ID。
客户端可以使用JMSCorrelationID头字段将一条消息链接到另一条消息。典型的用途是将响应消息与其请求消息链接起来。
JMSCorrelationID可以保存以下内容之一:
*提供程序特定的消息ID
*特定于应用程序的字符串
*提供程序本机字节[]值
由于JMS提供程序发送的每条消息都分配了一个消息ID值,因此通过消息ID链接消息非常方便。所有消息ID值都必须以“ID:”前缀开头。
在某些情况下,应用程序(由多个客户端组成)需要使用特定于应用程序的值来链接消息。例如,应用程序可以使用JMSCorrelationID来保存引用某些外部信息的值。应用程序指定的值不能以“ID:”前缀开头;这是为提供者生成的消息ID值保留的。
如果提供程序支持关联ID的本机概念,JMS客户机可能需要分配特定的JMSCorrelationID值,以匹配不使用JMS API的客户机所期望的值。字节[]值用于此目的。没有本机关联ID值的JMS提供程序不需要支持字节[]值。JMSCorrelationID使用byte[]值是不可移植的。

代码示例

代码示例来源:origin: spring-projects/spring-framework

  1. /**
  2. * Post-process the given response message before it will be sent.
  3. * <p>The default implementation sets the response's correlation id
  4. * to the request message's correlation id, if any; otherwise to the
  5. * request message id.
  6. * @param request the original incoming JMS message
  7. * @param response the outgoing JMS message about to be sent
  8. * @throws JMSException if thrown by JMS API methods
  9. * @see javax.jms.Message#setJMSCorrelationID
  10. */
  11. protected void postProcessResponse(Message request, Message response) throws JMSException {
  12. String correlation = request.getJMSCorrelationID();
  13. if (correlation == null) {
  14. correlation = request.getJMSMessageID();
  15. }
  16. response.setJMSCorrelationID(correlation);
  17. }

代码示例来源:origin: wildfly/wildfly

  1. message.setJMSCorrelationID(jmsHeaderCorrelationID);

代码示例来源:origin: spring-projects/spring-framework

  1. jmsMessage.setJMSCorrelationID((String) jmsCorrelationId);

代码示例来源:origin: spring-projects/spring-framework

  1. /**
  2. * Create the invocation result response message.
  3. * <p>The default implementation creates a JMS ObjectMessage for the given
  4. * RemoteInvocationResult object. It sets the response's correlation id
  5. * to the request message's correlation id, if any; otherwise to the
  6. * request message id.
  7. * @param request the original request message
  8. * @param session the JMS session to use
  9. * @param result the invocation result
  10. * @return the message response to send
  11. * @throws javax.jms.JMSException if creating the message failed
  12. */
  13. protected Message createResponseMessage(Message request, Session session, RemoteInvocationResult result)
  14. throws JMSException {
  15. Message response = this.messageConverter.toMessage(result, session);
  16. String correlation = request.getJMSCorrelationID();
  17. if (correlation == null) {
  18. correlation = request.getJMSMessageID();
  19. }
  20. response.setJMSCorrelationID(correlation);
  21. return response;
  22. }

代码示例来源:origin: apache/nifi

  1. message.setJMSTimestamp(Long.parseLong(entry.getValue()));
  2. } else if (entry.getKey().equals(JmsHeaders.CORRELATION_ID)) {
  3. message.setJMSCorrelationID(entry.getValue());
  4. } else if (entry.getKey().equals(JmsHeaders.TYPE)) {
  5. message.setJMSType(entry.getValue());

代码示例来源:origin: spring-projects/spring-framework

  1. @Test
  2. public void jmsCorrelationIdMappedToHeader() throws JMSException {
  3. String correlationId = "ABC-123";
  4. javax.jms.Message jmsMessage = new StubTextMessage();
  5. jmsMessage.setJMSCorrelationID(correlationId);
  6. assertInboundHeader(jmsMessage, JmsHeaders.CORRELATION_ID, correlationId);
  7. }

代码示例来源:origin: apache/activemq

  1. /**
  2. * Copies the standard JMS and user defined properties from the givem
  3. * message to the specified message
  4. *
  5. * @param fromMessage the message to take the properties from
  6. * @param toMessage the message to add the properties to
  7. * @throws JMSException
  8. */
  9. public static void copyProperties(Message fromMessage, Message toMessage) throws JMSException {
  10. toMessage.setJMSMessageID(fromMessage.getJMSMessageID());
  11. toMessage.setJMSCorrelationID(fromMessage.getJMSCorrelationID());
  12. toMessage.setJMSReplyTo(transformDestination(fromMessage.getJMSReplyTo()));
  13. toMessage.setJMSDestination(transformDestination(fromMessage.getJMSDestination()));
  14. toMessage.setJMSDeliveryMode(fromMessage.getJMSDeliveryMode());
  15. toMessage.setJMSRedelivered(fromMessage.getJMSRedelivered());
  16. toMessage.setJMSType(fromMessage.getJMSType());
  17. toMessage.setJMSExpiration(fromMessage.getJMSExpiration());
  18. toMessage.setJMSPriority(fromMessage.getJMSPriority());
  19. toMessage.setJMSTimestamp(fromMessage.getJMSTimestamp());
  20. Enumeration propertyNames = fromMessage.getPropertyNames();
  21. while (propertyNames.hasMoreElements()) {
  22. String name = propertyNames.nextElement().toString();
  23. Object obj = fromMessage.getObjectProperty(name);
  24. toMessage.setObjectProperty(name, obj);
  25. }
  26. }
  27. }

代码示例来源:origin: spring-projects/spring-integration

  1. private void onMessageAsync(javax.jms.Message message, String correlationId) throws Exception {
  2. SettableListenableFuture<AbstractIntegrationMessageBuilder<?>> future = this.futures.remove(correlationId);
  3. if (future != null) {
  4. message.setJMSCorrelationID(null);
  5. future.set(buildReply(message));
  6. }
  7. else {
  8. logger.warn("Late reply for " + correlationId);
  9. }
  10. }

代码示例来源:origin: spring-projects/spring-integration

  1. private void copyCorrelationIdFromRequestToReply(javax.jms.Message requestMessage, javax.jms.Message replyMessage)
  2. throws JMSException {
  3. if (this.correlationKey != null) {
  4. if (this.correlationKey.equals("JMSCorrelationID")) {
  5. replyMessage.setJMSCorrelationID(requestMessage.getJMSCorrelationID());
  6. }
  7. else {
  8. String value = requestMessage.getStringProperty(this.correlationKey);
  9. if (value != null) {
  10. replyMessage.setStringProperty(this.correlationKey, value);
  11. }
  12. else if (this.logger.isWarnEnabled()) {
  13. this.logger.warn("No property value available on request Message for correlationKey '"
  14. + this.correlationKey + "'");
  15. }
  16. }
  17. }
  18. else if (replyMessage.getJMSCorrelationID() == null) {
  19. replyMessage.setJMSCorrelationID(requestMessage.getJMSMessageID());
  20. }
  21. }

代码示例来源:origin: spring-projects/spring-integration

  1. String correlation = UUID.randomUUID().toString().replaceAll("'", "''");
  2. if (this.correlationKey.equals("JMSCorrelationID")) {
  3. jmsRequest.setJMSCorrelationID(correlation);
  4. messageSelector = "JMSCorrelationID = '" + correlation + "'";
  5. jmsRequest.setJMSCorrelationID(null);
  6. messageSelector = this.correlationKey + " = '" + correlation + "'";

代码示例来源:origin: spring-projects/spring-integration

  1. correlation = this.gatewayCorrelation + "_" + Long.toString(this.correlationId.incrementAndGet());
  2. if (this.correlationKey.equals("JMSCorrelationID")) {
  3. jmsRequest.setJMSCorrelationID(correlation);
  4. jmsRequest.setJMSCorrelationID(null);

代码示例来源:origin: spring-projects/spring-integration

  1. jmsMessage.setJMSCorrelationID((String) jmsCorrelationId);

代码示例来源:origin: spring-projects/spring-integration

  1. jmsRequest.setJMSCorrelationID(null);
  2. reply = doSendAndReceiveAsyncDefaultCorrelation(destination, jmsRequest, session, priority);
  3. ((javax.jms.Message) reply).setJMSCorrelationID(null);

代码示例来源:origin: spring-projects/spring-integration

  1. @Test
  2. public void testJmsCorrelationIdMappedToHeader() throws JMSException {
  3. String correlationId = "ABC-123";
  4. javax.jms.Message jmsMessage = new StubTextMessage();
  5. jmsMessage.setJMSCorrelationID(correlationId);
  6. DefaultJmsHeaderMapper mapper = new DefaultJmsHeaderMapper();
  7. Map<String, Object> headers = mapper.toHeaders(jmsMessage);
  8. Object attrib = headers.get(JmsHeaders.CORRELATION_ID);
  9. assertNotNull(attrib);
  10. assertSame(correlationId, attrib);
  11. }

代码示例来源:origin: spring-projects/spring-integration

  1. final javax.jms.Message jmsReply = request;
  2. template.send(request.getJMSReplyTo(), session -> {
  3. jmsReply.setJMSCorrelationID(jmsReply.getJMSMessageID());
  4. return jmsReply;
  5. });

代码示例来源:origin: spring-projects/spring-integration

  1. final javax.jms.Message jmsReply = request;
  2. template.send(request.getJMSReplyTo(), (MessageCreator) session -> {
  3. jmsReply.setJMSCorrelationID(jmsReply.getJMSMessageID());
  4. return jmsReply;
  5. });

代码示例来源:origin: spring-projects/spring-integration

  1. final javax.jms.Message jmsReply = request;
  2. template.send(request.getJMSReplyTo(), session -> {
  3. jmsReply.setJMSCorrelationID(jmsReply.getJMSMessageID());
  4. return jmsReply;
  5. });

代码示例来源:origin: stackoverflow.com

  1. public void ConvertSend() {
  2. Map map = new HashMap();
  3. map.put("Name", "Vimal");
  4. map.put("Age", new Integer(45));
  5. jmsTemplate.convertAndSend("jmsQueue", map, new MessagePostProcessor() {
  6. public Message postProcessMessage(Message message) throws JMSException {
  7. message.setIntProperty("ID", 9999);
  8. message.setJMSCorrelationID("123-99999");
  9. return message;
  10. }
  11. });
  12. }

代码示例来源:origin: techa03/goodsKill

  1. @Override
  2. public Message createMessage(Session session) throws JMSException {
  3. Message mes = session.createMessage();
  4. mes.setJMSCorrelationID(message.getJMSCorrelationID());
  5. mes.setStringProperty("message", "dealSuccess!");
  6. return mes;
  7. }
  8. });

代码示例来源:origin: apache/activemq-artemis

  1. public void testJMSSelectors(ConnectionSupplier producerConnectionSupplier, ConnectionSupplier consumerConnectionSupplier) throws Exception {
  2. testJMSSelector(producerConnectionSupplier, consumerConnectionSupplier, NORMAL_QUEUE_NAME, message -> message.setStringProperty("color", "blue"), "color = 'blue'");
  3. testJMSSelector(producerConnectionSupplier, consumerConnectionSupplier, NORMAL_QUEUE_NAME, message -> message.setJMSCorrelationID("correlation"), "JMSCorrelationID = 'correlation'");
  4. testJMSSelector(producerConnectionSupplier, consumerConnectionSupplier, NORMAL_QUEUE_NAME, null, "JMSPriority = 1", Message.DEFAULT_DELIVERY_MODE, 1, Message.DEFAULT_TIME_TO_LIVE);
  5. testJMSSelector(producerConnectionSupplier, consumerConnectionSupplier, NORMAL_QUEUE_NAME, message -> message.setStringProperty("JMSXGroupID", "groupA"), "JMSXGroupID = 'groupA'");
  6. }

相关文章