1 package org
.argeo
.slc
.jms
;
5 import javax
.jms
.DeliveryMode
;
6 import javax
.jms
.Destination
;
7 import javax
.jms
.JMSException
;
8 import javax
.jms
.Message
;
10 import org
.argeo
.slc
.SlcException
;
11 import org
.argeo
.slc
.msg
.event
.SlcEvent
;
12 import org
.argeo
.slc
.msg
.event
.SlcEventPublisher
;
13 import org
.springframework
.jms
.core
.JmsTemplate
;
14 import org
.springframework
.jms
.core
.MessagePostProcessor
;
16 public class JmsSlcEventPublisher
implements SlcEventPublisher
{
17 private Destination eventsDestination
;
18 private JmsTemplate jmsTemplate
;
20 public void publish(final SlcEvent event
) {
21 if (jmsTemplate
.getDeliveryMode() != DeliveryMode
.PERSISTENT
)
22 throw new SlcException(
23 "Delivery mode has to be persistent in order to have durable subscription");
25 jmsTemplate
.convertAndSend(eventsDestination
, event
,
26 new MessagePostProcessor() {
28 public Message
postProcessMessage(Message message
)
30 Map
<String
, String
> headers
= event
.getHeaders();
31 for (String key
: headers
.keySet()) {
32 message
.setStringProperty(key
, headers
.get(key
));
39 public void setEventsDestination(Destination eventsDestination
) {
40 this.eventsDestination
= eventsDestination
;
43 public void setJmsTemplate(JmsTemplate jmsTemplate
) {
44 this.jmsTemplate
= jmsTemplate
;