Nice work, Alex! Your answer would have saved me a bunch of time--I must have missed it by a day or two. Just some additional details, I was able to get both the JMSSender and JMSReceiver working in a local Workspace as well as get FME Server Pub/Sub working. I've posted the .bindings file that works for us.
For the local workspace, you need to make sure that the Jar containing com.sun.jndi.fscontext.RefFSContextFactory is somewhere in your class path.. I used fscontext-4.5-b25.jar from Maven here: https://mvnrepository.com/artifact/com.sun.messaging.mq/fscontext/4.5-b25. As a quick hack, I put this Jar as well as the RabbitMQ JMS jars into my default FME Java Plugins directory: C:\Users\<USERNAME>\Documents\FME\Plugins\Java.
Configuring log4j on top of the slf4j was useful for debugging--the RabbitMQ client code does output some decent traces. I put a screenshot of all the jars I used to get this working below.
Bindings File (in c:\RabbitMQBindings\.bindings for our config)
ConnectionFactory/ClassName=javax.jms.ConnectionFactory
ConnectionFactory/FactoryName=com.rabbitmq.jms.admin.RMQObjectFactory
#We are using a virtual host
ConnectionFactory/RefAddr/0/Content=fmetest
ConnectionFactory/RefAddr/0/Type=virtualHost
ConnectionFactory/RefAddr/0/Encoding=String
ConnectionFactory/RefAddr/1/Content=127.0.0.1
ConnectionFactory/RefAddr/1/Type=host
ConnectionFactory/RefAddr/1/Encoding=String
# JMS Queue where we have a RabbitMQ queue called "JMS2" boundto an exchange called "jms.durable.queues:.
# I named this very confusinginly, but FME will connect to this using the "JMS"
# destination. See screenshot below.
JMS/ClassName=javax.jms.Queue
JMS/FactoryName=com.rabbitmq.jms.admin.RMQObjectFactory
JMS/RefAddr/0/Content=jms/Queue
JMS/RefAddr/0/Type=name
JMS/RefAddr/0/Encoding=String
JMS/RefAddr/1/Content=true
JMS/RefAddr/1/Type=amqp
JMS/RefAddr/1/Encoding=String
JMS/RefAddr/2/Content=JMS
JMS/RefAddr/2/Type=amqpRoutingKey
JMS/RefAddr/2/Encoding=String
JMS/RefAddr/3/Content=com.rabbitmq.jms.admin.RMQDestination
JMS/RefAddr/3/Type=type
JMS/RefAddr/3/Encoding=String
JMS/RefAddr/4/Content=jms.durable.queues
JMS/RefAddr/4/Type=amqpExchangeName
JMS/RefAddr/4/Encoding=String
JMS/RefAddr/5/Content=JMS2
JMS/RefAddr/5/Type=destinationName
JMS/RefAddr/5/Encoding=String
JMS/RefAddr/6/Content=JMS2
JMS/RefAddr/6/Type=amqpQueueName
JMS/RefAddr/6/Encoding=String
FME Workspace Configuration


