JmsDomainEventNotifierImpl.java 1.3KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. package se.citerus.dddsample.application.messaging;
  2. import org.springframework.jms.core.JmsOperations;
  3. import org.springframework.jms.core.MessageCreator;
  4. import se.citerus.dddsample.domain.model.cargo.TrackingId;
  5. import se.citerus.dddsample.domain.model.handling.HandlingEvent;
  6. import se.citerus.dddsample.domain.service.DomainEventNotifier;
  7. import javax.jms.*;
  8. /**
  9. * JMS based implementation.
  10. */
  11. public final class JmsDomainEventNotifierImpl implements DomainEventNotifier {
  12. private JmsOperations jmsOperations;
  13. private Destination destination;
  14. public static final String TRACKING_ID_KEY = TrackingId.class.getName() + ".KEY";
  15. public void cargoWasHandled(final HandlingEvent event) {
  16. jmsOperations.send(destination, new MessageCreator() {
  17. public Message createMessage(final Session session) throws JMSException {
  18. final MapMessage message = session.createMapMessage();
  19. message.setStringProperty(TRACKING_ID_KEY, event.cargo().trackingId().idString());
  20. return message;
  21. }
  22. });
  23. }
  24. public void setJmsOperations(final JmsOperations jmsOperations) {
  25. this.jmsOperations = jmsOperations;
  26. }
  27. public void setDestination(final Destination destination) {
  28. this.destination = destination;
  29. }
  30. }