apache / apache/pulsar-client-node
不使用证书的情况下调用ssl的url,服务无法连接
- Langage dominant
- C++
- Étoiles
- 164
- Forks
- 98
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
以下是node代码,在java中是可以通过```
PulsarClient client = PulsarClient.builder().serviceUrl(brokerServerUrl).allowTlsInsecureConnection(true)
.authentication(new IoTAuthentication(iotAccessId, iotSecretKey)).build();
Consumer consumer = client.newConsumer(Schema.STRING).topic(String.format("%s/iot/event", iotAccessId))
.subscriptionName(subscriptionName).subscriptionType(SubscriptionType.Failover)
.autoUpdatePartitions(Boolean.FALSE).subscribe();
```
这种方式来跳过ssl证书的,在下面node中我也加入了tlsAllowInsecureConnection: true,
tlsValidateHostname: false,这两个参数但是无法连接到服务
`const Pulsar = require('pulsar-client');
const crypto = require('crypto');
const iotAccessId = "yGmZyJnpqPPIGwzj1564";
const iotSecretKey="b9fab8817fa64f4ab6424d6a7035d2e7";
const brokerSSLServerUrl = "pulsar+ssl://iot-north-mq.heclouds.com:6651/";
const iotSubscriptionName="yGmZyJnpqPPIGwzj1564-sub";
const token = JSON.stringify({
tenant: iotAccessId,
password: sha256(iotAccessId + sha256(iotSecretKey)).substring(4, 20)
});
(async () => {
try {
console.log("token:", token);
// Create a client
let authenticationToken = new Pulsar.AuthenticationToken({
token: token
});
Pulsar.Client.setLogHandler((level, file, line, message) => {
console.log('[%s][%s:%d] %s', Pulsar.LogLevel.toString(level), file, line, message);
});
const client = new Pulsar.Client({
serviceUrl: brokerSSLServerUrl,
authentication: authenticationToken,
tlsAllowInsecureConnection: true,
tlsValidateHostname: false,
});
console.log("client:", client);
// Create a consumer
const consumer = await client.subscribe({
topic: `${iotAccessId}/iot/event`,
// topic: 'persistent://yGmZyJnpqPPIGwzj1564/iot/event-partition-0',
subscription: iotSubscriptionName,
subscriptionType: 'Failover'
});
console.log("consumer:", consumer);
// Receive the message
const msg = await consumer.receive();
console.log(msg.getData().toString());
consumer.acknowledge(msg);
await consumer.close();
await client.close();
} catch (error) {
console.error("An error occurred:", error.message);
console.error(error.stack);
}
})();
function sha256(data) {
return crypto.createHash('sha256').update(data, 'utf8').digest('hex');
}`
最下面是报错信息```
[INFO][Client:86] Subscribing on Topic :yGmZyJnpqPPIGwzj1564/iot/event
[INFO][ClientConnection:187] [ -> pulsar+ssl://iot-north-mq.heclouds.com:6651] Create ClientConnection, timeout=10000
[INFO][ConnectionPool:124] Created connection for pulsar+ssl://iot-north-mq.heclouds.com:6651-pulsar+ssl://iot-north-mq.heclouds.com:6651-0
[INFO][ClientConnection:403] [10.10.80.213:63773 -> 218.201.45.7:6651] Connected to broker
[ERROR][ClientConnection:1318] [10.10.80.213:63773 -> 218.201.45.7:6651] Connection closed with ConnectError (refCnt: 2)
[INFO][ConnectionPool:141] Remove connection for pulsar+ssl://iot-north-mq.heclouds.com:6651-pulsar+ssl://iot-north-mq.heclouds.com:6651-0
[ERROR][ClientImpl:507] Error Checking/Getting Partition Metadata while Subscribing on persistent://yGmZyJnpqPPIGwzj1564/iot/event -- ConnectError
[INFO][ClientConnection:275] [10.10.80.213:63773 -> 218.201.45.7:6651] Destroyed connection to pulsar+ssl://iot-north-mq.heclouds.com:6651-0
An error occurred: Failed to create consumer: ConnectError
Error: Failed to create consumer: ConnectError
```
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Piste de recherche
Commencez par le constructeur du client Node et ses options tlsAllowInsecureConnection et tlsValidateHostname, puis reproduisez l’exemple d’abonnement fourni avec l’URL de service pulsar+ssl et la journalisation du client activée. Comparez l’échec de connexion et l’échec des métadonnées de partition avec le comportement de Java ; c’est terminé lorsque le client Node peut se connecter et créer le consumer sans ConnectError lorsque la validation du certificat est désactivée.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- javascript, node.js
- Domaine
- distributed-systems
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100