Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Jms per message destination #1181

Merged
merged 12 commits into from
Sep 10, 2018

Commits on Sep 1, 2018

  1. Extend Jms message model

    - introduced directed message types.
    - introduced toQueue, toTopic, to, and withoutDestination methods to
      switch between directed and regular messages.
    - remove parens of properties() member in JmsMessage.
    - added missing type annotations, removed unnecessary parens.
    - improved scaladocs of message types.
    andreas-sa-schroeder committed Sep 1, 2018
    Configuration menu
    Copy the full SHA
    b41da8d View commit details
    Browse the repository at this point in the history
  2. Implement flow with per-message destinations

    - Divided JmsConnector trait into producer and consumer connector traits
      to simplify logic of each connector
    - Divided consumer and produce sessions for the same reason
    - Destination objects are cached in a memory-aware way
    - Added tests and documentation of new flow
    andreas-sa-schroeder committed Sep 1, 2018
    Configuration menu
    Copy the full SHA
    a12f348 View commit details
    Browse the repository at this point in the history

Commits on Sep 2, 2018

  1. Reduce synchronization overhead of destination cache

    - As the producer is passed from one thread to the next only when the
      first one has completed its send() operation, it is sufficient to
      make writes visible across threads. No real synchronization is
      necessary.
    - Along the way, harmonized javax.jms imports in JmsConnector to
      consistently use the jmx. prefix.
    andreas-sa-schroeder committed Sep 2, 2018
    Configuration menu
    Copy the full SHA
    53bce20 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    f10cdce View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    0467181 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    ec1260f View commit details
    Browse the repository at this point in the history
  5. Parallelize Jms session creation

    Session creation was asynchronous for consumers, but all sessions were
    created in one thread. Producer sessions were created synchronously.
    To reduce latency, session creation is fanned out to multiple threads.
    andreas-sa-schroeder committed Sep 2, 2018
    Configuration menu
    Copy the full SHA
    1c829ac View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    c6dfc84 View commit details
    Browse the repository at this point in the history

Commits on Sep 3, 2018

  1. Simplify and explain async JmsProducer startup logic

    - Added a comment to explain why the stage might pull when a new session
      is added
    - Removed unnecessary check from in.onPush: we know a producer is
      available, since we only pull if the producer pool is non-empty
    andreas-sa-schroeder committed Sep 3, 2018
    Configuration menu
    Copy the full SHA
    9f50733 View commit details
    Browse the repository at this point in the history
  2. Simplify JmsMessage model and fallback to default destination

    - Introduce optional Direction field on JmsMessage
    - Fallback to default destination if no direction is defined on message
    
    Fixes akka#1166
    andreas-sa-schroeder committed Sep 3, 2018
    Configuration menu
    Copy the full SHA
    467d102 View commit details
    Browse the repository at this point in the history

Commits on Sep 5, 2018

  1. Improve PR according to review comments

    - reduced flakiness of session initialization
    - aligned session creation between producer and consumer
    - made JmsSession sealed
    - simplified synchronization in SoftReferenceCache
    andreas-sa-schroeder committed Sep 5, 2018
    Configuration menu
    Copy the full SHA
    bf30b5d View commit details
    Browse the repository at this point in the history

Commits on Sep 9, 2018

  1. Remove synchronization on SoftReferenceCache

    Provided a test in SoftReferenceCacheSpec giving some evidence
    (which of course is no proof) that synchronization is not needed for how
    the cache is intended to be used.
    
    SoftReferenceCache synchronization can piggyback on Akka's async
    callback synchronization guarantess that is ultimately relying on
    AtomicReference operations.
    andreas-sa-schroeder committed Sep 9, 2018
    Configuration menu
    Copy the full SHA
    050b3af View commit details
    Browse the repository at this point in the history