1. 26 6月, 2013 2 次提交
    • R
      Remove PubSubChannelRegistry · ee9c46ad
      Rossen Stoyanchev 提交于
      ee9c46ad
    • R
      Introduce MessageHeader accessor types · 486b4101
      Rossen Stoyanchev 提交于
      A new type MessageHeaderAccesssor provides read/write access to
      MessageHeaders along with typed getter/setter methods along the lines
      of the existing MessageBuilder methods (internally MessageBuilder
      merely delegates to MessageHeaderAccessor). This class is extensible
      with sub-classes expected to provide typed getter/setter methods for
      specific categories of message headers.
      
      NativeMessageHeaderAccessor is one specific sub-class that further
      provides read/write access to headers from some external message
      source (e.g. STOMP headers). Native headers are stored in a separate
      MultiValueMap and kept under a specific key.
      486b4101
  2. 24 6月, 2013 3 次提交
  3. 20 6月, 2013 3 次提交
    • R
      Add @MessageExceptionHandler · 55a212d4
      Rossen Stoyanchev 提交于
      Similar to @ExceptionHandler but for message processing. Such a method
      can send messages to both the message broker channel and the client
      channel provided the client is subscribed to the target destination.
      55a212d4
    • R
      Add support for "system" STOMP session · 01c4e458
      Rossen Stoyanchev 提交于
      The "system" STOMP session is established at startup and can be used
      to send messages without a client session, e.g. to support broadcasting
      from a REST/HTTP handler method.
      01c4e458
    • R
      Add MessageHolder · 44db0f81
      Rossen Stoyanchev 提交于
      MessageHolder holds the currently processed message in a ThreadLocal,
      which allows PubSubMessageBuilder to automatically add a session id
      to messages to be sent.
      44db0f81
  4. 19 6月, 2013 5 次提交
    • R
      Refactor PubSubHeaders, StompHeaders, MessageBuilder · 5cfc59d7
      Rossen Stoyanchev 提交于
      Rename to PubSubHeaderAccessor and StompHeaderAccessor
      Move the renamed classes to support packages
      
      Remove fromPayloadAndHeaders from MessageBuilder, just use
      withPayload(..).copyHeaders(..) instead.
      5cfc59d7
    • R
      811bb1b0
    • A
      Fix race when flushing messages · 28174744
      Andy Wilkinson 提交于
      The use of an AtomicBoolean and no lock meant that it was possible
      for a message to be queued and then never be flushed and sent to the
      broker:
      
      1. On t1, a message is received and isConnected is false. The message
         will be queued.
      2. On t2, CONNECTED is received from the broker. isConnected is set
         to true, the queue is drained and the queued messages are forwarded
      3. On t1, the message is added to the queue
      
      To fix this, checking that isConnected is false (step 1 above) and the
      queueing of a message (step 3 above) need to be performed as a unit
      so that the flushing of the queued messages can't be interleaved. This
      is achieved by synchronizing on a monitor and performing steps 1
      and 3 and synchronizing on the same monitor while performing step 2.
      
      The monitor is held while the messages are actually being forwarded
      to the broker. An alternative would be to drain the queue into
      a local variable, release the monitor, and then forward the messages.
      The main advantage of this alternative is that the monitor is held for
      less time. It also reduces the theoretical risk of deadlock by not
      holding the monitor while making an alien call. The downside of the
      alternative is that it may lead to messages being forwarded out of
      order. For this reason the alternative approach was rejected.
      28174744
    • R
      Fix issue with obtaining WebSocketContainer · 3c6c56fe
      Rossen Stoyanchev 提交于
      3c6c56fe
    • R
      Add generic parameters to MessageHandler impls · 3f9da6f4
      Rossen Stoyanchev 提交于
      3f9da6f4
  5. 18 6月, 2013 3 次提交
  6. 17 6月, 2013 1 次提交
  7. 15 6月, 2013 3 次提交
  8. 14 6月, 2013 5 次提交
  9. 13 6月, 2013 5 次提交
  10. 12 6月, 2013 2 次提交
  11. 11 6月, 2013 3 次提交
  12. 10 6月, 2013 2 次提交
  13. 04 6月, 2013 1 次提交
  14. 31 5月, 2013 2 次提交