After a quick glance, it seems you are creating all of the objects (Context, Connection, QueueSession, MessageListener, and QueueSender) each time you send a message. Instead, create each of those once and reuse them. Perhaps you might want to split initialization and sending messages into different methods, and not have the send method call the init method.
Also, your SendRecvClient extends Thread but you never start it. Does it even need to be a Thread at all?
I’ve looked at a lot of different solutions, and in my humble opinion Aspose is the way to go. Here’s the link: http://aspose.com