⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 roundtripclient.java

📁 一个简单实用的开源C++消息中间件SAFMQ - [软件开发] - [开源 消息中间件 SAFMQ ] 2006-11-23 在很多网络应用中
💻 JAVA
字号:
/*
 * Created on Jun 3, 2005
 *
 */

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.URI;

import com.safmq.MQBuilder;
import com.safmq.MQException;
import com.safmq.MessageQueue;
import com.safmq.QueueMessage;
import com.safmq.Safmq;
import com.safmq.UUID;

/**
 * Note: this example expects a SAFMQ server to be running on the "localhost"
 * or same computer as the example is being run.  It also expects a user to exist
 * with the name "username" and password "password".  Additionally there should
 * be two queues "query" and "resposne", and the user "username" should have
 * read and write access to to this queue. 
 * 
 * @author Matt
 */
public class RoundTripClient {
	static URI queue_name;
	static URI response_name;
	static String user_name = "username";
	static String password = "password";
	
	static {
		try {	
			queue_name = new URI("safmq://localhost/query");
			response_name = new URI("safmq://localhost/response");
		} catch (Exception e) {
			
		}
	}
	
	public static void main(String[] args) {
		try {
			// Allocate a connection to the query queue, this queue will be used to send the first message
			MessageQueue mq = MQBuilder.buildMessageQueue(queue_name,user_name,password);
			// Allocate the message itself
			QueueMessage	msg = new QueueMessage();

			// Set the type for the body so that clients may have a chance to understand what is in the boyd			
			msg.setBodyType(Safmq.BT_TEXT);
			// Set a name for the message, note this is optional, but some receivers
			// may choose an action depending on the name specified here
			msg.setLabel("Round Trip Test");
			// Set the time to live for the message, this value is the number of seconds
			// before the SAFMQ server will remove the message and generate an error
			msg.setTimeToLiveSeconds(5);
			// Indicate that this message should be responded to by the SAFMQ server
			msg.setTTLErrorWanted(true);
			// Indicate where the response message goes
			msg.setResponseQueueName(response_name.toString());
			// Get the output stream to fill the body.
			// In this case wrap it with a PrintWriter so that we can have formated output.
			PrintWriter	pw = new PrintWriter(new OutputStreamWriter(msg.getOutputStream()));
			
			pw.println("Hello world");
			pw.println("This is a test of the round trip capabilities of SAFMQ.");
			pw.flush(); // Not all output stream wrappers need this but it's good practice
			
			// Send the message and check the result code
			int error = mq.Enqueue(msg);
			// Close the queue we don't need it any more, this release resources on the server
			mq.Close(); 
			if (error == Safmq.EC_NOERROR) {
				// Grab this message's id  this will let us search for the resposne
				UUID id = msg.getMessageID();
				// Open a connection to the response queue
				MessageQueue responseQueue = MQBuilder.buildMessageQueue(response_name,user_name,password);
				
				// Get a fresh QueueMessage object
				msg = new QueueMessage();
				
				// Retreive the response message
				error = responseQueue.RetreiveID(true,id,10,msg);
				
				// Close the queue we don't need it any more, this release resources on the server
				responseQueue.Close();
				if (error == Safmq.EC_NOERROR) {
					// Note: if the message class is Safmq.MC_SYSTEMERRMSG the message was generated by SAFMQ
					if (msg.getMessageClass() == Safmq.MC_SYSTEMERRMSG) {
						System.out.println("Received an error from the server");
					}
					// Output the contents of the emssage
					System.out.println("Message Data Follows");
					System.out.println("Label: " + msg.getLabel());
					InputStream in = msg.getInputStream();
					byte		data[] = new byte[1024];
					int			read;
					while ( (read=in.read(data)) > 0) {
						System.out.write(data,0,read);
					}
				} else {
					System.out.println("Error while retreiving: "+Safmq.errorDecode(error));
				}
			} else { 
				System.out.println("Error while enqueing: "+Safmq.errorDecode(error));
			}
		} catch (MQException mqe) {
			mqe.printStackTrace();	
		} catch (IOException ioe) {
			ioe.printStackTrace();
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -