All-

I put together a rough list of features that appear to be gaps in Artemis. Some of these are from current ActiveMQ features, and others are comparison from other leading messaging brokers (IBM MQ, Tibco EMS, Sonic MQ, etc).

This list was started a couple weeks ago and is probably outdated. Additionally, I have not made a deep dive into Artemis code to confirm some behavior assumptions. I thought it would be good to get a conversation started on Artemis feature gaps and see how the wider ActiveMQ user community felt about these features. A number of them definitely need more detail and I'd be happy to flush them out into a JIRA (I've started creating some JIRAs already and those are indicated).

Here we go...

Matt's Artemis Feature TODO:

1. Browse needs a page limit (ActiveMQ)
2. Sparse file support for disk journal (ActiveMQ)
3. Separate lock location from storage location for master-slave mode (ActiveMQ) 4. Option to have on-disk index for super large message counts w/ low JDK memory (ActiveMQ) 5. File-based lease locker for slaves on Windows CIFS shares and other non-cluster locking filesystems (IBM MQ) 6. Separate Inhibit Put and Inhibit Get on a queue vs “pause & resume” allows for draining of queues by applications during maintenance windows (IBM MQ) 7. Cluster connectors should support static include / dynamic include / exclude destination name filter (ActiveMQ)
8. Composite Queue and Topic support (ActiveMQ)
9. Virtual Topic support (IBM MQ, ActiveMQ)
    a. Shared subscriptions
b. Separate destinations for pub vs sub (allows for splitting traffic across networks) 10. Explicit Transmission queues for broker-to-broker communication so admins have visibility into what messages are earmarked to move. a. Should support multi-threaded transmission (i.e. multiple cluster connections) (IBM MQ, TIbco EMS, SonicMQ, others) b. ActiveMQ is starting to address this with broker-subscriptions for Network Connectors on Topics. c. This is also needed for broker-to-broker sharing of pub-sub to avoid pub-sub loops
11. Separate consumerTTL and messageTTL for cluster connections (ActiveMQ)
12. Destination Policy API (aka Queue Attributes in Artemis) for extending destination policy plugins
13. Automatic DLQ naming convention policies (prefix and/or suffix based)
14. Missing support for many messaging scheduler features
15. Queue attributes to limit max message count and total bytes (IBM MQ, Tibco EMS) 16. Internally defined message headers should have aliases to align to the JMS provider standard (“JMS_AMQ_*” vs “_AMQ_”) IBM MQ, Tibco, Sonic, others
17. Client-side url lookup using http endpoint (or other)
18. Inactive Destination Garbage Collection
19. Plugins: Message Timestamping, Message Expiry, Broker Path plugin
20. JMSXUserId property auto assigned using connected userId
21. Anonymous and guest authorizer
22. Deliver directly to consumer from memory by limiting total space to in-memory page size (ActiveMQ vmCursor) 23. vm:// client protocol for same-JDK communication to allow for bypassing of the marshal/unmarshal and TCP layers
24. Exclusive Consumer and Exclusive Consumer with Message Groups
25. Support for subscribing to advisory/event messages (ActiveMQ, IBM MQ, others)

26. Duplex support for cluster-connections (ARTEMIS-838, ActiveMQ)

27. Support multiple journal-directory data stores (ARTEMIS-839 ActiveMQ, Tibco EMS)

28. Plugin API for message selector store for Virtual Topic selectorAware="true"


Wishlist features:

29. Plugin API for messageId repository for duplicate checking. The ability to have a cache (jcache prolly, right?): Infinispan, Hazelcast or other to support large and externally managed messageId caches for dup handling between brokers

30. AMQP 0.9 support (RabbitMQ)

31. Fanout client producer uri (ActiveMQ)

32. Round-robin client producer uri


Reply via email to