我正试图在react原生应用上集成rabbitmq
参考此库:https://www.npmjs.com/package/react-native-rabbitmq
我尝试使用适当的配置属性创建一个Connection对象。但当我试图检查let connection = new Connection(config);
的结果时,我收到了以下信息:
连接对象中的CCD_ 2。如您所见,它提供connected: false
我已经提到在节点端创建rabbit mq服务器:https://www.rabbitmq.com/tutorials/tutorial-one-javascript.html创建一个工作正常的节点rabbitmq服务器。现在我需要在客户端上接收消息
我确信配置属性&rabbitmq服务器运行正常,因为使用相同的I可以从一个单独的节点服务器连接到rabbitmq。尝试在connection.on('error')
&在connection.on('connected')
中,但没有得到任何日志
无法理解问题出在哪里。有人能帮忙或建议一个更好的图书馆吗?需要在react原生上集成RabbitMQ
const config = {
host: '192.0.0.1', //dummy values
port: 5672,
username: 'username',
password: 'password',
virtualhost: 'vhost'
};
const connection = new Connection(config);
console.log('connection config changed');
console.log(connection);
connection.on('error', (event) => {
console.log('error');
console.log(event);
});
connection.on('connected', (event) => {
const queue = new Queue(this.connection, {
name: 'queue_name',
passive: false,
durable: true,
exclusive: false,
consumer_arguments: { 'x-priority': 1 }
});
const exchange = new Exchange(connection, {
name: 'exchange_name',
type: 'direct',
durable: true,
autoDelete: false,
internal: false
});
queue.bind(exchange, 'queue_name');
// Receive one message when it arrives
queue.on('message', (data) => {
console.log('Single message received');
console.log(data);
});
// Receive all messages send with in a second
queue.on('messages', (data) => {
console.log('Multiple messages received');
console.log(data);
});
});
我已经能够将rabbitmq连接到我的react原生应用程序。我设法在windows 10 PC上做到了这一点。
步骤1:如果您安装了rabbitmqforwindows,则可以继续,否则,请转到https://www.rabbitmq.com/install-windows.html。访问安装文件中的sbin文件夹(在程序文件下),复制路径,例如(C:Program FilesRabbitMQ Serverrabbitmq_server-3.7.4sbin
)并将其添加到环境变量中(转到这台电脑/我的电脑,右键单击并选择属性然后单击高级系统设置,在下选择环境变量系统变量,突出显示路径并单击编辑,单击new,然后将复制的路径粘贴到中,然后单击确定。上面的步骤可以帮助您在cmd 上运行rabbitmq命令
步骤2:访问漫游文件夹中的Rabbitmq文件夹
C:UsersPcNameAppDataRoamingRabbitMQ
打开enabled_plugins文件并键入以下代码:
[rabbitmq_management].
保存并退出
打开config文件夹并在中创建rabbitmq.config文件
键入以下代码片段:
[
{rabbit, [
{tcp_listeners, [{"127.0.0.1", 5672},
{"::1", 5672}]}
]}
].
保存并关闭文件
步骤3:访问命令行(以管理员身份运行)从命令行的任何位置,运行以下命令来设置username,密码和管理权限:
rabbitmqctl add_user dummy dummy
rabbitmqctl set_user_tags dummy administrator
rabbitmqctl set_permissions -p / dummy ".*" ".*" ".*"
之后运行以启用rabbitmq管理:
rabbitmq-plugins enable rabbitmq_management
运行完成后,运行以下程序:
rabbitmq-server
它应该显示";完成了n个插件(其中n是一个数字)
步骤4:打开App.js文件(在您的react本机文件夹中)并复制以下代码:
/**
* Sample React Native App
* https://github.com/facebook/react-native
* @flow
*/
import React, { Component } from 'react';
import {
Platform,
StyleSheet,
Text,
View
} from 'react-native';
import { Connection,
Queue,
Exchange
} from 'react-native-rabbitmq';
const instructions = Platform.select({
ios: 'Press Cmd+R to reload,n' +
'Cmd+D or shake for dev menu',
android: 'Double tap R on your keyboard to reload,n' +
'Shake or press menu button for dev menu',
});
type Props = {};
export default class App extends Component<Props> {
constructor(props) {
super(props)
}
componentWillMount() {
const config = {
host: '10.0.2.2',
port: 5672,
username: 'dummy',
password: 'dummy',
virtualhost: '/'
};
let connection = new Connection(config)
connection.connect()
let connected = false;
let queue;
let exchange;
connection.on('connected', (event) => {
queue = new Queue(connection, {
name: 'queue_name',
passive: false,
durable: true,
exclusive: false,
consumer_arguments: { 'x-priority': 1 }
});
exchange = new Exchange(connection, {
name: 'exchange_name',
type: 'direct',
durable: true,
autoDelete: false,
internal: false
});
queue.bind(exchange, 'queue_name');
});
connection.on('error', event => {
connected = false;
console.log(connection);
console.log(event);
});
}
render() {
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome to React Native!
</Text>
<Text style={styles.instructions}>
To get started, edit App.js
</Text>
<Text style={styles.instructions}>
{instructions}
</Text>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});
主机ip(10.0.2.2)是默认的android ip(适用于运行android模拟器的用户)。
连接代码必须放在componentWillMount()函数中,因为它是异步的。
第5步:打开android模拟器的电源,构建react原生应用程序。android屏幕上应该没有错误。
步骤6:通过以下链接访问浏览器上的rabbitmq:管理
localhost:15672
使用您的用户名和密码登录(在这种情况下,用户名:dumm,密码:dumm,您应该会在Connections(连接)下看到一个连接,在Queues (队列)下看到队列(queue_name)
干杯。