前言
作為一名Android開發,有的時候也是要做做其他工作的,前段時間寫了一個很簡單的java消息轉發程序,因為和三方廠商合作,對方只提供了java的sdk,然而我們這邊都是清一色的C#后台開發人員,所以我就起到橋梁的作用了,總結一下簡單的工作,以后回望或許有所感想。
程序方面
怎么提供消息給C#程序員呢?那當然是RabbitMQ,這個相對簡單,也貼一下,萬一以后會用到MQ呢?
// 設置配置信息
if(factory == null){
factory = new ConnectionFactory();
factory.setHost(Config.host);
factory.setPort(Config.port);
factory.setVirtualHost(Config.virtualHost);
factory.setUsername(Config.username);
factory.setPassword(Config.password);
}
// 設置鏈接信息
if(connection == null || (connection != null && !connection.isOpen())){
connection = factory.newConnection();
channel = connection.createChannel();
channel.exchangeDeclare(Config.EXCHANGE_NAME, "direct", durable);
channel.confirmSelect();
}
// 設置頻道信息
if(channel == null || (channel != null && !channel.isOpen())){
channel = connection.createChannel();
channel.exchangeDeclare(Config.EXCHANGE_NAME, "direct", durable);
channel.confirmSelect();
}
// 發送消息
channel.basicPublish(Config.EXCHANGE_NAME, Config.ezviz_key, MessageProperties.PERSISTENT_BASIC,
msg.getBytes());
當然代碼里做了適當封裝,但MQ使用就是這樣了,當然這只是簡單的MQ使用,根據場景使用可能會使用別的類型,比如一個生產者多個消費者什么的。這方面推薦一個地址:https://www.cnblogs.com/luxiaoxun/p/3918054.html
我覺得他講得很適合初學者。
開發環境運行
因為這個消息轉發就是接入SDK,然后對消息進行處理,處理完畢之后按着C#程序員給我的格式,對處理完畢的消息進行類型轉換並json一下,然后發送到MQ隊列,很簡單,所以就打算用jar包的形式做后台跑在linux服務器上,那么我們很簡單的方法可以實現這個問題:
nohup /usr/java/jdk1.8.0_112/bin/java -jar /root/java/MessageForwarding.jar >/root/java/message.log &
通過nohup指令使程序不依賴於控制台,這樣運行完畢之后可以ctrl+c,程序還繼續運行,上面的日志講jar包里面的打印語句都輸出到了message.log里面,這樣在程序里面的日志都能夠查看,當然看看需不需要寫一下定期清理,視情況而定了。這樣滿足了基本的功能需求,但是linux重啟自后怎么辦?其實這一塊說起來簡單,過程可能有點彎。
方法一:
通過java wrapper做這一塊工作,詳細的過程可以搜一下java wrapper,這方面的教程很多,這里貼一個官方網站吧:
https://wrapper.tanukisoftware.com
方法二:
通過我了解的linux的開機啟動文件,我想通過shell腳本完成這個事,我先把jar包放到/root/java/MessageForwarding.jar這里,然后編輯一個簡單的shell腳本(MessageForwarding.sh):
# !/bin/bash
# program
# test java open
export JAVA_HOME=/usr/java/jdk1.8.0_112
export JRE=/usr/java/jdk1.8.0_112/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE/lib:.
export PATH=$PATH:$JAVA_HOME/bin/:$JRE/bin
nohup java -jar /root/java/MessageForwarding.jar >/root/java/message.log &
當然很簡單,這就是執行jar包,運行一下,執行這個sh文件,沒有問題:可以通過:
ps -ef|grep java查詢一下進程。
開機啟動就需要操作/etc/rc.local文件,有可能linux系統不同文件有些區別,我之前看別的博客就沒成功,只要在這里執行這個文件就OK了。
保存退出,開機重啟,查詢一下進程,程序已經在進程中了,而且消息也在MQ隊列了。
最后
這個過程很簡單,記錄一下,不然以后連簡單的東西都忘記了,可能有錯誤的地方,也或許這樣做不太合適,希望批評指正:redzkh@gmail.com