@@ -7,8 +7,8 @@ use std::time::Duration;
77use tokio:: time:: timeout;
88use trogon_nats:: REQ_ID_HEADER ;
99use trogon_nats:: jetstream:: {
10- JetStreamConsumer as _, JetStreamConsumerFactory , JetStreamPublisher , JsAck as _,
11- JsAckWith as _, JsMessageRef as _, JsRequestMessage ,
10+ JetStreamConsumer as _, JetStreamCreateConsumer as _, JetStreamGetStream , JetStreamPublisher ,
11+ JsAck as _ , JsAckWith as _, JsMessageRef as _, JsRequestMessage ,
1212} ;
1313use trogon_std:: JsonSerialize ;
1414
@@ -27,8 +27,8 @@ pub async fn js_request<J, Req, Res, S>(
2727 operation_timeout : Duration ,
2828) -> agent_client_protocol:: Result < Res >
2929where
30- J : JetStreamPublisher + JetStreamConsumerFactory ,
31- <J :: Consumer as trogon_nats:: jetstream:: JetStreamConsumer >:: Message : JsRequestMessage ,
30+ J : JetStreamPublisher + JetStreamGetStream ,
31+ << J :: Stream as trogon_nats :: jetstream :: JetStreamCreateConsumer > :: Consumer as trogon_nats:: jetstream:: JetStreamConsumer >:: Message : JsRequestMessage ,
3232 Req : serde:: Serialize ,
3333 Res : DeserializeOwned ,
3434 S : JsonSerialize ,
@@ -37,22 +37,22 @@ where
3737 // runner responds before we start consuming. DeliverAll replays from stream start.
3838 let responses_stream = streams:: responses_stream_name ( prefix) ;
3939 let resp_config = consumers:: response_consumer ( prefix, session_id, req_id) ;
40- let resp_consumer : J :: Consumer = js
41- . create_consumer ( & responses_stream, resp_config )
40+ let stream = js
41+ . get_stream ( & responses_stream)
4242 . await
43- . map_err ( |e| {
44- Error :: new (
45- ErrorCode :: InternalError . into ( ) ,
46- format ! ( "create response consumer: {e}" ) ,
47- )
48- } ) ? ;
49- let mut resp_messages : < J :: Consumer as trogon_nats :: jetstream :: JetStreamConsumer > :: Messages =
50- resp_consumer. messages ( ) . await . map_err ( |e| {
51- Error :: new (
52- ErrorCode :: InternalError . into ( ) ,
53- format ! ( "response messages: {e}" ) ,
54- )
55- } ) ?;
43+ . map_err ( |e| Error :: new ( ErrorCode :: InternalError . into ( ) , format ! ( "get stream: {e}" ) ) ) ? ;
44+ let resp_consumer = stream . create_consumer ( resp_config ) . await . map_err ( |e| {
45+ Error :: new (
46+ ErrorCode :: InternalError . into ( ) ,
47+ format ! ( "create response consumer: {e}" ) ,
48+ )
49+ } ) ? ;
50+ let mut resp_messages = resp_consumer. messages ( ) . await . map_err ( |e| {
51+ Error :: new (
52+ ErrorCode :: InternalError . into ( ) ,
53+ format ! ( "response messages: {e}" ) ,
54+ )
55+ } ) ?;
5656
5757 let payload_bytes = serializer
5858 . to_vec ( request)
6262 headers. insert ( REQ_ID_HEADER , req_id) ;
6363 headers. insert ( SESSION_ID_HEADER , session_id) ;
6464
65- js. js_publish_with_headers ( subject. to_string ( ) , headers, Bytes :: from ( payload_bytes) )
65+ js. publish_with_headers ( subject. to_string ( ) , headers, Bytes :: from ( payload_bytes) )
66+ . await
67+ . map_err ( |e| Error :: new ( ErrorCode :: InternalError . into ( ) , format ! ( "js publish: {e}" ) ) ) ?
6668 . await
67- . map_err ( |e| Error :: new ( ErrorCode :: InternalError . into ( ) , format ! ( "js publish : {e}" ) ) ) ?;
69+ . map_err ( |e| Error :: new ( ErrorCode :: InternalError . into ( ) , format ! ( "js ack : {e}" ) ) ) ?;
6870
6971 match timeout ( operation_timeout, resp_messages. next ( ) ) . await {
7072 Ok ( Some ( Ok ( js_msg) ) ) => {
0 commit comments