Skip to content

Commit 97e940d

Browse files
authored
Merge branch 'master' into CMR-10139-1
2 parents c80afef + 8055076 commit 97e940d

File tree

16 files changed

+885
-107
lines changed

16 files changed

+885
-107
lines changed

dev-system/src/cmr/dev_system/config.clj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,3 +70,9 @@
7070
use an external instance."
7171
{:default :in-memory
7272
:parser parse-dev-system-component-type})
73+
74+
(defconfig dev-system-sqs-server-type
75+
"Specifies whether dev system should run an in-memory SQS service
76+
(elasticmq) or use an external instance."
77+
{:default :in-memory
78+
:parser parse-dev-system-component-type})

dev-system/src/cmr/dev_system/system.clj

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
[cmr.bootstrap.system :as bootstrap-system]
77
[cmr.common.jobs :as jobs]
88
[cmr.common.lifecycle :as lifecycle]
9-
[cmr.common.log :refer [debug info warn error]]
9+
[cmr.common.log :refer [info warn error]]
1010
[cmr.common.system :as common-sys]
1111
[cmr.common.util :as u]
1212
[cmr.dev-system.config :as dev-config]
@@ -21,6 +21,7 @@
2121
[cmr.message-queue.config :as rmq-conf]
2222
[cmr.message-queue.queue.memory-queue :as mem-queue]
2323
[cmr.message-queue.queue.sqs :as sqs]
24+
[cmr.message-queue.queue-server.embedded-sqs-server :as sqs-server]
2425
[cmr.message-queue.test.queue-broker-wrapper :as wrapper]
2526
[cmr.metadata-db.data.memory-db :as memory]
2627
[cmr.metadata-db.system :as mdb-system]
@@ -46,7 +47,7 @@
4647
peek)]
4748
(info "Using system token" token)
4849
token)
49-
(catch Exception e
50+
(catch Exception _e
5051
(warn "Unable to extract the ECHO system read token from configuration.")
5152
transmit-config/mock-echo-system-token)))
5253

@@ -134,17 +135,25 @@
134135
[_]
135136
nil)
136137

138+
(defn create-sqs-server
139+
"Sets sqs server configuration values and returns an instance of a sqs-server component to run
140+
in memory if applicable."
141+
[type]
142+
(case type
143+
:in-memory (sqs-server/create-sqs-server)
144+
nil))
145+
137146
(defmulti create-db
138147
"Returns an instance of the database component to use."
139148
(fn [type]
140149
type))
141150

142151
(defmethod create-db :in-memory
143-
[type]
152+
[_type]
144153
(memory/create-db))
145154

146155
(defmethod create-db :external
147-
[type]
156+
[_type]
148157
nil)
149158

150159
(defmulti create-echo
@@ -153,13 +162,15 @@
153162
(fn [type]
154163
type))
155164

165+
#_{:clj-kondo/ignore [:unresolved-var]}
156166
(defmethod create-echo :in-memory
157-
[type]
167+
[_type]
158168
(transmit-config/set-urs-relative-root-url! "/urs")
159169
(mock-echo-system/create-system))
160170

171+
#_{:clj-kondo/ignore [:unresolved-var]}
161172
(defmethod create-echo :external
162-
[type]
173+
[_type]
163174
(transmit-config/set-echo-rest-port! (dev-config/external-echo-port))
164175
(transmit-config/set-echo-system-token! (external-echo-system-token))
165176
(transmit-config/set-echo-rest-context! "/echo-rest"))
@@ -171,7 +182,7 @@
171182
type))
172183

173184
(defmethod create-queue-broker :in-memory
174-
[type]
185+
[_type]
175186
(-> (indexer-config/queue-config)
176187
(rmq-conf/merge-configs (vp-config/queue-config))
177188
(rmq-conf/merge-configs (access-control-config/queue-config))
@@ -191,7 +202,7 @@
191202
(assoc :ttls ttls)))
192203

193204
(defmethod create-queue-broker :aws
194-
[type]
205+
[_type]
195206
(-> (external-queue-config [])
196207
sqs/create-queue-broker))
197208

@@ -230,18 +241,18 @@
230241

231242
(defmulti create-ingest-app
232243
"Create an instance of the ingest application."
233-
(fn [db-type queue-broker]
244+
(fn [db-type _queue-broker]
234245
db-type))
235246

236247
(defmethod create-ingest-app :in-memory
237-
[db-type queue-broker]
248+
[_db-type queue-broker]
238249
(assoc (ingest-system/create-system)
239250
:db (ingest-data/create-db)
240251
:queue-broker queue-broker
241252
:scheduler (jobs/create-non-running-scheduler)))
242253

243254
(defmethod create-ingest-app :external
244-
[db-type queue-broker]
255+
[_db-type queue-broker]
245256
(assoc (ingest-system/create-system)
246257
:queue-broker queue-broker))
247258

@@ -264,17 +275,19 @@
264275
:echo (dev-config/dev-system-echo-type)
265276
:db (dev-config/dev-system-db-type)
266277
:message-queue (dev-config/dev-system-queue-type)
267-
:redis (dev-config/dev-system-redis-type)})
278+
:redis (dev-config/dev-system-redis-type)
279+
:sqs-server (dev-config/dev-system-sqs-server-type)})
268280

269281
(defn create-system
270282
"Returns a new instance of the whole application."
271283
[]
272-
(let [{:keys [elastic echo db message-queue redis]} (component-type-map)
284+
(let [{:keys [elastic echo db message-queue redis sqs-server]} (component-type-map)
273285
db-component (create-db db)
274286
echo-component (create-echo echo)
275287
queue-broker (create-queue-broker message-queue)
276288
elastic-server (create-elastic elastic)
277289
redis-server (create-redis redis)
290+
sqs-server (create-sqs-server sqs-server)
278291
control-server (control/create-server)]
279292
{:instance-name (common-sys/instance-name "dev-system")
280293
:apps (u/remove-nil-keys
@@ -289,7 +302,8 @@
289302
:pre-components (u/remove-nil-keys
290303
{:elastic-server elastic-server
291304
:broker-wrapper queue-broker
292-
:redis-server redis-server})
305+
:redis-server redis-server
306+
:sqs-server sqs-server})
293307
:post-components {:control-server control-server}}))
294308

295309
(defn- stop-components

message-queue-lib/project.clj

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
"The java aws sdk version to use."
33
"1.12.663")
44

5+
(def aws-java-sdk2-version
6+
"The java aws sdk version to use."
7+
"2.28.19")
8+
59
(defproject nasa-cmr/cmr-message-queue-lib "0.1.0-SNAPSHOT"
610
:description "Library containing code to handle message queue interactions within the CMR."
711
:url "https://github.com/nasa/Common-Metadata-Repository/tree/master/message-queue-lib"
@@ -10,6 +14,10 @@
1014
[clj-time "0.15.1"]
1115
[com.amazonaws/aws-java-sdk-sns ~aws-java-sdk-version]
1216
[com.amazonaws/aws-java-sdk-sqs ~aws-java-sdk-version]
17+
[software.amazon.awssdk/regions ~aws-java-sdk2-version]
18+
[software.amazon.awssdk/sns ~aws-java-sdk2-version]
19+
[software.amazon.awssdk/sqs ~aws-java-sdk2-version]
20+
[com.fasterxml.jackson.core/jackson-annotations "2.15.4"]
1321
[commons-codec/commons-codec "1.11"]
1422
[commons-io "2.6"]
1523
[commons-logging "1.2"]
@@ -21,6 +29,7 @@
2129
[org.apache.httpcomponents/httpcore "4.4.10"]
2230
[org.clojure/clojure "1.11.2"]
2331
[org.clojure/tools.reader "1.3.2"]
32+
[org.testcontainers/testcontainers "1.19.7"]
2433
[potemkin "0.4.5"]]
2534
:plugins [[lein-shell "0.5.0"]]
2635
:jvm-opts ^:replace ["-server"

message-queue-lib/src/cmr/message_queue/config.clj

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,3 +63,52 @@
6363
q-to-e
6464
(:queues-to-exchanges config2))))
6565
(update-in [:queues-to-policies] merge (:queues-to-policies config2)))))
66+
67+
(declare cmr-internal-subscriptions-topic-name)
68+
(defconfig cmr-internal-subscriptions-topic-name
69+
"The name of the internal subscriptions topic."
70+
{:default (str "cmr-internal-subscriptions-" (app-environment))})
71+
72+
(declare cmr-subscriptions-topic-name)
73+
(defconfig cmr-subscriptions-topic-name
74+
"The name of the subscriptions topic to which external clients can subscribe."
75+
{:default (str "cmr-subscriptions-" (app-environment))})
76+
77+
(declare cmr-internal-subscriptions-queue-name)
78+
(defconfig cmr-internal-subscriptions-queue-name
79+
"The name of the internal subscriptions queue."
80+
{:default (str "cmr-internal-subscriptions-queue-" (app-environment))})
81+
82+
(declare cmr-internal-subscriptions-dead-letter-queue-name)
83+
(defconfig cmr-internal-subscriptions-dead-letter-queue-name
84+
"The name of the internal subscriptions queue."
85+
{:default (str "cmr-internal-subscriptions-dead-letter-queue-" (app-environment))})
86+
87+
(declare cmr-subscriptions-dead-letter-queue-name)
88+
(defconfig cmr-subscriptions-dead-letter-queue-name
89+
"The name of the subscriptions dead letter queue for external subscriptions."
90+
{:default (str "cmr-subscriptions-dead-letter-queue-" (app-environment))})
91+
92+
(declare sqs-server-protocol)
93+
(defconfig sqs-server-protocol
94+
"Default SQS server host."
95+
{:default "http"})
96+
97+
(declare sqs-server-host)
98+
(defconfig sqs-server-host
99+
"Default SQS server host."
100+
{:default "localhost"})
101+
102+
(declare sqs-server-port)
103+
(defconfig sqs-server-port
104+
"Default SQS server host."
105+
{:default "9324"})
106+
107+
(declare sqs-server-url)
108+
(defconfig sqs-server-url
109+
"The URL of the local or test SQS implementation."
110+
{:default (str (sqs-server-protocol)
111+
"://"
112+
(sqs-server-host)
113+
":"
114+
(sqs-server-port))})
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
(ns cmr.message-queue.pub-sub
2+
(:require
3+
[cmr.message-queue.config :as config]
4+
#_{:clj-kondo/ignore [:unused-namespace]}
5+
[cmr.message-queue.topic.aws-topic :as aws-topic]
6+
[cmr.message-queue.topic.local-topic :as local-topic]))
7+
8+
(defn create-topic
9+
"Create a topic using the given topic configuration. The type is determined
10+
by the environment variable CMR_QUEUE_TYPE."
11+
[]
12+
(let [create-fn (case (config/queue-type)
13+
"memory" local-topic/setup-topic nil
14+
"aws" aws-topic/setup-topic (config/cmr-internal-subscriptions-topic-name))]
15+
(create-fn)))

0 commit comments

Comments
 (0)