mirror of
https://github.com/pcvolkmer/mv64e-rest-to-kafka-gateway
synced 2025-09-13 09:12:51 +00:00
feat: use application/vnd.dnpm.v2.mtb+json
in record headers
This commit is contained in:
13
src/main.rs
13
src/main.rs
@@ -4,6 +4,8 @@ use axum::http::{HeaderValue, Request, StatusCode};
|
|||||||
use axum::middleware::{from_fn, Next};
|
use axum::middleware::{from_fn, Next};
|
||||||
use axum::response::{IntoResponse, Response};
|
use axum::response::{IntoResponse, Response};
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
|
use rdkafka::producer::FutureProducer;
|
||||||
|
use rdkafka::ClientConfig;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use std::sync::{Arc, LazyLock};
|
use std::sync::{Arc, LazyLock};
|
||||||
#[cfg(debug_assertions)]
|
#[cfg(debug_assertions)]
|
||||||
@@ -63,10 +65,13 @@ async fn main() -> Result<(), ()> {
|
|||||||
.init();
|
.init();
|
||||||
}
|
}
|
||||||
|
|
||||||
let sender = Arc::new(DefaultMtbFileSender::new(
|
let producer = ClientConfig::new()
|
||||||
&CONFIG.topic,
|
.set("bootstrap.servers", &CONFIG.bootstrap_server)
|
||||||
&CONFIG.bootstrap_server,
|
.set("message.timeout.ms", "5000")
|
||||||
)?);
|
.create::<FutureProducer>()
|
||||||
|
.map_err(|_| ())?;
|
||||||
|
|
||||||
|
let sender = Arc::new(DefaultMtbFileSender::new(&CONFIG.topic, producer));
|
||||||
|
|
||||||
let routes = routes(sender).layer(from_fn(check_basic_auth));
|
let routes = routes(sender).layer(from_fn(check_basic_auth));
|
||||||
|
|
||||||
|
@@ -2,7 +2,6 @@ use async_trait::async_trait;
|
|||||||
use mv64e_mtb_dto::Mtb;
|
use mv64e_mtb_dto::Mtb;
|
||||||
use rdkafka::message::{Header, OwnedHeaders};
|
use rdkafka::message::{Header, OwnedHeaders};
|
||||||
use rdkafka::producer::{FutureProducer, FutureRecord};
|
use rdkafka::producer::{FutureProducer, FutureRecord};
|
||||||
use rdkafka::ClientConfig;
|
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
@@ -28,17 +27,11 @@ pub struct DefaultMtbFileSender {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl DefaultMtbFileSender {
|
impl DefaultMtbFileSender {
|
||||||
pub fn new(topic: &str, bootstrap_server: &str) -> Result<Self, ()> {
|
pub fn new(topic: &str, producer: FutureProducer) -> Self {
|
||||||
let producer = ClientConfig::new()
|
Self {
|
||||||
.set("bootstrap.servers", bootstrap_server)
|
|
||||||
.set("message.timeout.ms", "5000")
|
|
||||||
.create::<FutureProducer>()
|
|
||||||
.map_err(|_| ())?;
|
|
||||||
|
|
||||||
Ok(Self {
|
|
||||||
topic: topic.to_string(),
|
topic: topic.to_string(),
|
||||||
producer,
|
producer,
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -51,10 +44,15 @@ impl MtbFileSender for DefaultMtbFileSender {
|
|||||||
patient_id: mtb.patient.id.to_string(),
|
patient_id: mtb.patient.id.to_string(),
|
||||||
};
|
};
|
||||||
|
|
||||||
let record_headers = OwnedHeaders::default().insert(Header {
|
let record_headers = OwnedHeaders::default()
|
||||||
key: "requestId",
|
.insert(Header {
|
||||||
value: Some(&request_id.to_string()),
|
key: "requestId",
|
||||||
});
|
value: Some(&request_id.to_string()),
|
||||||
|
})
|
||||||
|
.insert(Header {
|
||||||
|
key: "contentType",
|
||||||
|
value: Some("application/vnd.dnpm.v2.mtb+json"),
|
||||||
|
});
|
||||||
|
|
||||||
let record_key = serde_json::to_string(&record_key).map_err(|_| ())?;
|
let record_key = serde_json::to_string(&record_key).map_err(|_| ())?;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user