以C++;使用RabbitMq访问Java
我在下面找到了用Java为RMQ编写的标准Send和Recv文件。 我对代码做了一些修改,以便将消息存储到变量中 现在,消息是一个我刚输入的字符串,但是我希望能够从C++程序中获取数据(可能是一个变量32),并将它传递到我的SturdMead变量。 Recv文件以C++;使用RabbitMq访问Java,java,c++,message-queue,transfer,data-transfer,Java,C++,Message Queue,Transfer,Data Transfer,我在下面找到了用Java为RMQ编写的标准Send和Recv文件。 我对代码做了一些修改,以便将消息存储到变量中 现在,消息是一个我刚输入的字符串,但是我希望能够从C++程序中获取数据(可能是一个变量32),并将它传递到我的SturdMead变量。 Recv文件 import com.rabbitmq.client.*; import java.io.IOException; public class Recv { public static String recv(String
import com.rabbitmq.client.*;
import java.io.IOException;
public class Recv
{
public static String recv(String ip, String Q) throws Exception
{
ConnectionFactory factory = new ConnectionFactory();
factory.setHost(ip);
factory.setUsername("test");
factory.setPassword("test");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
System.out.println(" [*] Waiting for messages. To exit press CTRL+C");
MyConsumer consumer=new MyConsumer(channel);
channel.basicConsume(Q,true,consumer);
return consumer.getStoredMessage();
}
public static class MyConsumer extends DefaultConsumer
{
public String storedMessage;
public MyConsumer(Channel channel)
{
super(channel);
}
public String getStoredMessage()
{
return storedMessage;
}
@Override
public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body)
throws IOException
{
String message = new String(body, "UTF-8");
System.out.println(" [x] Received '" + message + "'");
storedMessage = message; // store message here
}
}
}
发送文件
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
public class Send {
public static void send(String ip, String Q) throws Exception {
ConnectionFactory factory = new ConnectionFactory();
//set connection info
factory.setHost(ip);
factory.setUsername("test");
factory.setPassword("test");
//create connection
Connection connection = factory.newConnection();
//create channel
Channel channel = connection.createChannel();
//publish message
int a = 1;
while (a!=0)
{
channel.queueDeclare(Q, false, false, false, null);
for(int i=1; i<=2; i++)
{
String message = "Pizza #"+i;
channel.basicPublish("", Q, null, message.getBytes("UTF-8"));
System.out.println(" [x] Sent '" + message + "'" + Q);
}
a--;
}
//SHUT IT ALL DOWN!
channel.close();
connection.close();
}
}
导入com.rabbitmq.client.Channel;
导入com.rabbitmq.client.Connection;
导入com.rabbitmq.client.ConnectionFactory;
公共类发送{
公共静态void发送(字符串ip、字符串Q)引发异常{
ConnectionFactory工厂=新的ConnectionFactory();
//设置连接信息
工厂设置主机(ip);
出厂设置用户名(“测试”);
出厂设置密码(“测试”);
//创建连接
Connection Connection=factory.newConnection();
//创建频道
Channel=connection.createChannel();
//发布消息
INTA=1;
while(a!=0)
{
queueDeclare(Q,false,false,false,null);
对于(int i=1;i