@Override public MessageGroup addMessageToGroup(Object groupId, Message<?> message) { Assert.isInstanceOf(String.class, groupId); String key = (String) groupId; Integer priority = new IntegrationMessageHeaderAccessor(message).getPriority(); if (priority != null && priority < 10 && priority >= 0) { key = key + ":" + priority; } return super.addMessageToGroup(key, message); }
@Override public int compare(Message<?> message1, Message<?> message2) { int compareResult = 0; if (this.targetComparator != null) { compareResult = this.targetComparator.compare(message1, message2); } else { Integer priority1 = new IntegrationMessageHeaderAccessor(message1).getPriority(); Integer priority2 = new IntegrationMessageHeaderAccessor(message2).getPriority(); priority1 = priority1 != null ? priority1 : 0; priority2 = priority2 != null ? priority2 : 0; compareResult = priority2.compareTo(priority1); } if (compareResult == 0) { Long sequence1 = ((MessageWrapper) message1).getSequence(); Long sequence2 = ((MessageWrapper) message2).getSequence(); compareResult = sequence1.compareTo(sequence2); } return compareResult; }
@Override protected boolean doSend(Message<?> message, long timeout) { try { DynamicJmsTemplateProperties.setPriority(new IntegrationMessageHeaderAccessor(message).getPriority()); this.jmsTemplate.convertAndSend(message); } finally { DynamicJmsTemplateProperties.clearPriority(); } return true; }
@Test public void priorityExpression() { MessagingTemplate template = new MessagingTemplate(); MessageChannel channel = context.getBean("priorityExpressionInput", MessageChannel.class); Message<?> result = template.sendAndReceive(channel, new GenericMessage<>(Collections.singletonMap("priority", "-10"))); assertNotNull(result); assertEquals(new Integer(-10), new IntegrationMessageHeaderAccessor(result).getPriority()); }
Integer priority = new IntegrationMessageHeaderAccessor(requestMessage).getPriority(); if (priority == null) { priority = this.defaultPriority;
Integer priority = new IntegrationMessageHeaderAccessor(requestMessage).getPriority(); if (priority == null) { priority = this.defaultPriority;
@Test public void priority() { MessagingTemplate template = new MessagingTemplate(); MessageChannel channel = context.getBean("priorityInput", MessageChannel.class); Message<?> result = template.sendAndReceive(channel, new GenericMessage<>("test")); assertNotNull(result); assertEquals(new Integer(42), new IntegrationMessageHeaderAccessor(result).getPriority()); }
@Test public void priorityExplicitOverwriteTrue() { MessageChannel channel = this.context.getBean("priorityExplicitOverwriteTrueInput", MessageChannel.class); MessagingTemplate template = new MessagingTemplate(); template.setDefaultDestination(channel); Message<?> result = template.sendAndReceive(new GenericMessage<String>("test")); assertNotNull(result); assertEquals(new Integer(42), new IntegrationMessageHeaderAccessor(result).getPriority()); }
@Test public void testPriority() { Message<Integer> importantMessage = MessageBuilder.withPayload(1) .setPriority(123).build(); assertEquals(new Integer(123), new IntegrationMessageHeaderAccessor(importantMessage).getPriority()); }
@Test public void priorityExplicitOverwriteFalse() { MessageChannel input = this.context.getBean("priorityExplicitOverwriteFalseInput", MessageChannel.class); QueueChannel replyChannel = new QueueChannel(); Message<?> message = MessageBuilder.withPayload("test") .setReplyChannel(replyChannel) .setPriority(77) .build(); input.send(message); Message<?> result = replyChannel.receive(0); assertNotNull(result); assertEquals(new Integer(77), new IntegrationMessageHeaderAccessor(result).getPriority()); }
@Test public void testNonDestructiveSet() { Message<Integer> message1 = MessageBuilder.withPayload(1) .setPriority(42).build(); Message<Integer> message2 = MessageBuilder.fromMessage(message1) .setHeaderIfAbsent(IntegrationMessageHeaderAccessor.PRIORITY, 13) .build(); assertEquals(new Integer(42), new IntegrationMessageHeaderAccessor(message2).getPriority()); }
@Override public MessageGroup addMessageToGroup(Object groupId, Message<?> message) { Assert.isInstanceOf(String.class, groupId); String key = (String) groupId; Integer priority = new IntegrationMessageHeaderAccessor(message).getPriority(); if (priority != null && priority < 10 && priority >= 0) { key = key + ":" + priority; } return super.addMessageToGroup(key, message); }
@Override public int compare(Message<?> message1, Message<?> message2) { int compareResult = 0; if (this.targetComparator != null) { compareResult = this.targetComparator.compare(message1, message2); } else { Integer priority1 = new IntegrationMessageHeaderAccessor(message1).getPriority(); Integer priority2 = new IntegrationMessageHeaderAccessor(message2).getPriority(); priority1 = priority1 != null ? priority1 : 0; priority2 = priority2 != null ? priority2 : 0; compareResult = priority2.compareTo(priority1); } if (compareResult == 0) { Long sequence1 = ((MessageWrapper) message1).getSequence(); Long sequence2 = ((MessageWrapper) message2).getSequence(); compareResult = sequence1.compareTo(sequence2); } return compareResult; }
Message<?> m = this.testChannel3.receive(0); assertNotNull(m); assertEquals(Integer.valueOf(9 - i), new IntegrationMessageHeaderAccessor(m).getPriority()); m = this.testChannel3.receive(0); assertNotNull(m); assertEquals(Integer.valueOf(9 - i), new IntegrationMessageHeaderAccessor(m).getPriority()); assertEquals(Integer.valueOf(199), new IntegrationMessageHeaderAccessor(m).getPriority()); assertEquals(99, m.getPayload()); m = this.testChannel3.receive(0); assertNotNull(m); assertNull(new IntegrationMessageHeaderAccessor(m).getPriority()); assertEquals(98, m.getPayload()); assertEquals(0, this.priorityCms.messageGroupSize("priorityCms:testChannel3")); assertEquals(Integer.valueOf(5), new IntegrationMessageHeaderAccessor(m).getPriority()); m = this.testChannel4.receive(0); assertNotNull(m); assertNull(new IntegrationMessageHeaderAccessor(m).getPriority()); assertEquals(0, this.priorityCms.getMessageGroupCount()); assertEquals(0, this.priorityCms.getMessageCountForAllMessageGroups());
@Override protected boolean doSend(Message<?> message, long timeout) { try { DynamicJmsTemplateProperties.setPriority(new IntegrationMessageHeaderAccessor(message).getPriority()); this.jmsTemplate.convertAndSend(message); } finally { DynamicJmsTemplateProperties.clearPriority(); } return true; }
Integer priority = new IntegrationMessageHeaderAccessor(requestMessage).getPriority(); if (priority == null) { priority = this.defaultPriority;
Integer priority = new IntegrationMessageHeaderAccessor(requestMessage).getPriority(); if (priority == null) { priority = this.defaultPriority;