我正在研究 MQTT 协议,并尝试使用 2 个不同的 Java 应用程序进行发布和订阅。
我的第一个应用程序是“发布”。我在 MQTT 服务器上发布一条消息。
我的第二个应用程序是“订阅”。我正在订阅一个主题并尝试接收消息。但我从来没有收到消息。
当我运行这两个应用程序时,我从“订阅”应用程序开始,然后运行“发布”应用程序。当“发布”应用程序启动时,我失去了与“订阅”应用程序的连接,并且无法接收消息。
在“订阅”应用程序中,我的方法 messageArrived() 永远不会被 client.setCallback(this) 调用。(参见下面的代码)。
这是我的 2 个代码应用程序:
发布应用程序:PubClient 类:
package publishclient;
import java.util.Random;
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.eclipse.paho.client.mqttv3.MqttCallback;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.MqttAsyncClient;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
public class PubClient implements MqttCallback {
MqttClient client;
MqttConnectOptions connOpt;
Random rand = new Random();
int nbRandom = 0;
int valMax =151, valMin = 40;
public PubClient() throws MqttException {
String broker = "tcp://88.177.147.17:1883"; // Adress MQTT Server …Run Code Online (Sandbox Code Playgroud) 我们在工作中使用 IBM RAD 进行开发,并使用 IBM Websphere Application Server 作为我们的 Web 应用程序服务器。考虑到这些限制,是否仍然可以开发和部署 Angular SPA?就像为 RAD 安装 Typescript 插件一样,但是如果没有生成 EAR 文件,您将如何将其部署到 WAS?
我正在尝试完成一个简单的回显服务器。目标是将消息重复返回给客户端。服务器和客户端都编译。服务器绑定到本地主机和端口 8080。客户端有地址、端口和消息。当客户端将程序执行到 sendto 部分时,它会在那里停下来等待。我的目标是将其发送到服务器,然后服务器将其发回。
问题:客户端正在发送消息,服务器可以正确接收消息,但服务器无法返回消息。请帮忙!
服务器端代码:
#include <iostream>
#include <string.h>
#include <fstream>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#define PORT 8080
using namespace std;
int main() {
int serSockDes, len, readStatus;
struct sockaddr_in serAddr, cliAddr;
char buff[1024] = {0};
char msg[] = "Hello to you too!!!\n";
//creating a new server socket
if((serSockDes = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
perror("socket creation error...\n");
exit(-1);
}
//binding the port to ip and port
serAddr.sin_family = AF_INET;
serAddr.sin_port = htons(PORT);
serAddr.sin_addr.s_addr …Run Code Online (Sandbox Code Playgroud) 我有一个 gRPC 服务器,并且我已经实现了 gRPC 服务器的正常关闭,如下所示
fun main() {
//Some code
term := make(chan os.Signal)
go func() {
if err := grpcServer.Serve(lis); err != nil {
term <- syscall.SIGINT
}
}()
signal.Notify(term, syscall.SIGTERM, syscall.SIGINT)
<-term
server.GracefulStop()
closeDbConnections()
}
Run Code Online (Sandbox Code Playgroud)
这很好用。如果我grpcServer.Serve()在主 goroutine 中编写逻辑,并将关闭处理程序逻辑放入另一个 goroutine 中,则之后的语句server.GracefulStop()通常不会执行。一些 DbConnections 如果closeDbConnections()执行的话,会被关闭。
server.GracefulStop()是一个阻塞调用。绝对在完成grpcServer.Serve()之前完成server.GracefulStop()。那么,在这个调用返回后,main goroutine 需要多长时间才能停止呢?
有问题的代码
func main() {
term := make(chan os.Signal)
go func() {
signal.Notify(term, syscall.SIGTERM, syscall.SIGINT)
<-term
server.GracefulStop()
closeDbConnections()
}()
if err := grpcServer.Serve(lis); …Run Code Online (Sandbox Code Playgroud) 我正在使用 Go 创建一个 HTTP 服务器。每当我进行数据库维护时,我希望服务器将所有流量重定向到“当前正在进行维护”页面。
目前,这是通过秘密管理页面(例如http://myhome/secret)完成的,但我想知道是否可以使用类似于 TERM 信号的信号来完成此操作,但暂时重定向而不是实际终止进程。
例如。
/home/myhome> nohup startServer &
...
/home/myhome> changeMyServerStatus "maintenance"
Run Code Online (Sandbox Code Playgroud)
我假设会有两个可执行文件..“startServer”和“changeMyServerStatus”
所以,这类似于服务。(比如重新加载)但是,这可能吗?如果是这样,你能给我一些提示吗?
谢谢
在 Node.js 中启动 http 服务器时,开发人员可以通过0如下传递来侦听随机可用端口:
const http = require('http')
const service = require('../my/service);
const server = http.createServer(service)
server.listen(process.env.PORT || 0) // <-- Random port by default!
Run Code Online (Sandbox Code Playgroud)
我想知道如何使用 gRPC 做同样的事情?就像是...
const grpc = require('grpc')
const services = require('./service_grpc_pb')
const server = new grpc.Server()
server.addService(services.MyService, { ... })
server.bind('0.0.0.0:0', grpc.ServerCredentials.createInsecure())
server.start()
Run Code Online (Sandbox Code Playgroud)
那样有用吗?我还没有弄清楚。我的目标是获取一个随机端口,然后查询服务器以获取分配的端口,以便向中央微服务注册表注册服务。
提前感谢您的帮助。
我遇到这个反复出现的问题,Mongo 在服务器上关闭而没有任何日志。我收到此错误消息:
com.mongodb.MongoTimeoutException:等待连接时 30000 毫秒后超时。集群状态的客户端视图为 {type=UNKNOWN,servers=[{address=localhost:27017,type=UNKNOWN,state=CONNECTING,Exception={com.mongodb.MongoSocketOpenException: Exception opening socket},由 {java.net .ConnectException:连接被拒绝}}]
然后我检查 mongo,它已经关闭了。但日志中绝对没有任何关于它崩溃或其他任何内容。这是来自 mongod.log 的日志:
2019-08-27T18:08:48.590 + 0430我命令[conn29]命令db.news命令:find {find:“新闻”,过滤器:{_id:“3bb30383-fa65-4899-99e9-938c5f4979c9”},限制: 1、singleBatch:true} planSummary:IDHACK keysExamined:1 docsExamined:1cursorExhausted:1numYields:1nreturned:1reslen:28344锁:{全局:{acquireCount:{r:4}},数据库:{acquireCount:{r: 2 } },集合:{ acquireCount: { r: 2 } } } 协议:op_query 189ms
2019-08-28T08:45:24.522+0430 我控制 [main] ***** 服务器重新启动
正如您所看到的,第一行是最新的查询,第二行是我再次运行它。
我绝不是专家或系统管理员,这个问题非常令人担忧,因此我非常感谢您能给我的任何帮助或指导。
我想在 Heroku 上部署我的服务器,但在 Heroku 构建上它说:
该应用程序在本地运行良好,但不知何故在 Heroku 服务器上崩溃了。
这是server.js的代码
const jsonServer = require('json-server');
const server = jsonServer.create();
const router = jsonServer.router('data.json');
const port = process.env.PORT || 4000;
server.use(router);
server.listen(port);
Run Code Online (Sandbox Code Playgroud)
这是package.json
{
"name": "server",
"version": "1.0.0",
"description": "json-server",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "npm install && node server.js"
},
"author": "japsuchiha",
"license": "ISC",
"dependencies": {
"core-util-is": "^1.0.2"
},
"devDependencies": {
"json-server": "^0.15.1"
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试学习使用 ktor,并且正在尝试在根路径处显示文本“Hello Ktor”,但我一直得到的结果是无法访问该网站。这是我的代码:
import io.ktor.application.*
import io.ktor.http.ContentType
import io.ktor.response.respondText
import io.ktor.routing.get
import io.ktor.routing.routing
fun main(args: Array<String>): Unit = io.ktor.server.netty.EngineMain.main(args)
private val userData = "{\"users\": [\"Timi\", \"Tomi\", \"Temi\"]}"
@Suppress("unused") // Referenced in application.conf
@kotlin.jvm.JvmOverloads
fun Application.module(testing: Boolean = false) {
routing {
get("/") {
call.respondText("Hello Ktor", ContentType.Text.Plain)
}
}
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我执行时出现错误:
sudo apt-get update
Run Code Online (Sandbox Code Playgroud)
错误:
Hit:1 http://us.archive.ubuntu.com/ubuntu bionic InRelease
Hit:2 http://us.archive.ubuntu.com/ubuntu bionic-updates InRelease
Hit:3 http://us.archive.ubuntu.com/ubuntu bionic-backports InRelease
Hit:4 http://security.ubuntu.com/ubuntu bionic-security InRelease
Hit:5 http://apt.postgresql.org/pub/repos/apt bionic-pgdg InRelease
Ign:6 http://apt.postgresql.org/pub/repos/apt utopic-pgdg InRelease
Hit:7 https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/bionic pgadmin4 InRelease
Err:8 http://apt.postgresql.org/pub/repos/apt utopic-pgdg Release
404 Not Found [IP: 2604:1380:2000:7501::69 80]
Reading package lists... Done
E: The repository 'http://apt.postgresql.org/pub/repos/apt utopic-pgdg Release' does not have a Release file.
N: Updating from such a repository can't be done securely and is therefore disabled by default.
N: See apt-secure(8) manpage for …Run Code Online (Sandbox Code Playgroud)