我正在尝试复制RabbitMQ主页中第一个Java发布者示例。
首先,我用Java实现,效果很好。然后,我尝试在Android上运行,这里就出现了奇怪的问题。
我手动添加了与我的Java程序中使用并在RabbitMQ教程中建议使用的相同的jar库。也就是说,在/libs
目录下添加了amqp-client-5.4.1
,slf4j-api-1.7.21
和slf4j-simple-1.7.22
,然后在buid.gradle(module:app)
中使用命令implementation files('libs/amqp-client-5.4.1.jar')
等引用。
然后,在MainActivity.java
文件中添加所需的包依赖项时没有遇到任何错误。但是,当添加应该发布数据的代码片段时,导入库的不同方法找不到,例如,factory
似乎没有setHost
方法。
我附上我当前正在使用的代码如下。
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.Channel;
public class MainActivity extends AppCompatActivity {
String QUEUE_NAME = "hello";
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("192.0.0.0"); //Marked as error
factory.setUsername("test");
factory.setPassword("test");
Connection connection;
Channel channel;
connection = factory.newConnection();
channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
String message = "Example3";
channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
System.out.println(" [x] Sent '" + message + "'");
channel.close();
connection.close();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
有什么想法,为什么这段代码在Java上运行良好,但在Android上无法正确导入这些库?
mavenCentral()
上获得,例如:https://mvnrepository.com/artifact/com.rabbitmq/amqp-client/5.4.2 - Martin Zeitler