我有一个连接到WebSocket服务器并从服务器接收消息的微服务。我想在这个应用程序中集成Sleuth,因为这是我的一组微服务的网关。但是当我连接到WebSocket服务器并开始接收消息时,我无法在日志中跟踪ID,spanid。我期待着这样的事情:
2018-08-09 11:26:20.222 INFO [kumarman-betsync-adapter-service-v2,0a011711c2470359,0a011711c2470359,true] 7230 --- [ient-SecureIO-2] c.b.b.a.service.BetSyncEventIdExtractor : SubscribeResponse feed received for eventId=7519016
2018-08-09 11:26:20.224 INFO [kumarman-betsync-adapter-service-v2,0a011711c2470359,2b028dadad5c440d,true] 7230 --- [ient-SecureIO-2] c.b.b.a.k.message.KafkaMessageSender : sent payload to topic='betsyncEventTopic'
但我得到了:
2018-08-09 11:26:20.222 INFO [kumarman-betsync-adapter-service-v2,,,] 7230 --- [ient-SecureIO-2] c.b.b.a.service.BetSyncEventIdExtractor : SubscribeResponse feed received for eventId=7519016
2018-08-09 11:26:20.224 INFO [kumarman-betsync-adapter-service-v2,,,] 7230 --- [ient-SecureIO-2] c.b.b.a.k.message.KafkaMessageSender : sent payload to topic='betsyncEventTopic'
我的代码如下:
@Service
@Slf4j
@AllArgsConstructor
public class BetsyncWebsocketAdapter {
private final BetsyncWebSocketHandler betsyncWebSocketHandler;
public void startNewConnection() {
try {
webSocketSession = new StandardWebSocketClient().doHandshake(
betsyncWebSocketHandler,
new WebSocketHttpHeaders(),
new URI(getBetsyncConnectionUrl()))
.get(KafkaAdminClient.MAX_TIME_LIMIT_TO_CONNECT, TimeUnit.SECONDS);
} catch (Exception e) {
log.error("exception occurred", e);
}
}
/**
* This will start the new connection after server start
*/
@EventListener(ApplicationReadyEvent.class)
public void onServerStart() {
startNewConnection();
}
}
@Slf4j
@Service
@AllArgsConstructor
public class BetsyncWebSocketHandler extends TextWebSocketHandler {
private static StringBuilder betSyncMessage = new StringBuilder();
private final LoginRequestBuilder loginRequestBuilder;
private final BetsyncMessageProcessing betsyncMessageProcessing;
@Override
public void afterConnectionEstablished(final WebSocketSession session) throws IOException {
session.sendMessage(new TextMessage(loginRequestBuilder.getLoginRequestDto()));
}
@Override
protected void handleTextMessage(final WebSocketSession session, final TextMessage message) {
betSyncMessage.append(message.getPayload());
if (message.isLast()) {
betsyncMessageProcessing.process(betSyncMessage.toString());
betSyncMessage = new StringBuilder();
} else {
log.debug("we have received a partial message starting with {}", getFirstXCharacter(message.getPayload(), 50));
}
}
@Override
protected void handlePongMessage(final WebSocketSession session, final PongMessage message) {
log.info("Response for Ping message received from the server");
}
@Override
public boolean supportsPartialMessages() {
return true;
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
log.error("server connection closed");
}
}
我们的pom条目包括:
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<spring.boot.version>2.0.3.RELEASE</spring.boot.version>
<spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
您正在自己创建套接字处理
webSocketSession = new StandardWebSocketClient().doHandshake(
betsyncWebSocketHandler,
new WebSocketHttpHeaders(),
new URI(getBetsyncConnectionUrl()))
.get(KafkaAdminClient.MAX_TIME_LIMIT_TO_CONNECT, TimeUnit.SECONDS);
当您直接使用Spring集成组件时,Spring Cloud Sleuth支持WebSockets。由于您是手动执行操作,因此您必须确保跟踪上下文得到传播并且您可以自己读取它。
我使用Spring Boot开发了这个websocket服务器。服务器与基于js的客户机配合得很好。 控制器: 这是服务器端。现在,对于客户机,我已经创建了一个@ClientEndpoint,当我连接到URI“ws://localhost:8080/spring-mvc-java/chat”时,我能够建立一个连接,并且可以看到@ClientEndpoint的@OnOpen回调被触发。 但是,use
问题内容: 我正在开发一个项目,该项目需要解析一些受保护的网页中的数据。为了获得对这些页面的访问权限,我必须克服SAML身份验证形式(Shibboleth)。是否有人能够在Android(Java)中实现此标准?我已经读过这个线程:Android的SAML客户端实现? 但这并不能给我一个很好的解决方案。实际上,我需要 获取某些受保护网页的数据 以便对其进行解析,而不是让用户看到此类网页的内容。因此
问题内容: 有人知道iOS的Elasticsearch客户端库吗?如果它也是迅速写的,那将是一个好处。 elasticsearch的“客户端”部分显示了多个平台的多个库,但对于iOS没有任何显示,我觉得有人必须这样做吗? 干杯 问题答案: 我怀疑是否有人- 上次我检查时没有,并且有充分的理由。请记住,为了允许IOS客户端(或Android)使用客户端库连接到Elasticsearch,您必须打开集
然后我使用: 这似乎无法为那些设置了该属性的客户机提供一个clusergroup。这对客户端节点不起作用吗?
我正在通过boto3组织从主AWS帐户获取所有子帐户。代码运行良好。我可以得到子帐户列表。但是如果您再次运行我的AWS Lambda函数,那么它将无法获取子帐户。 获取以下错误: 20到30分钟后,我可以看到我的代码工作了一次又一次地引发上述异常。 我是由AWS网关AWS Lambda运行此代码的。 有什么想法吗? 代码:
Artemis 1.2.0独立代理conf: 行为:分页工作。 客户端:artemis-jms-client v1.2.0 类:org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory 类:org.apache.activeMQ.ActiveMQConnectionFactory 这是虫子还是我只是煮错了?