This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-jbang-examples.git
The following commit(s) were added to refs/heads/main by this push:
new e44e108 Move ftp example here
e44e108 is described below
commit e44e108c7a9d23b05f63b70dde4c4dc2dd252430
Author: Claus Ibsen <[email protected]>
AuthorDate: Tue Dec 3 14:29:28 2024 +0100
Move ftp example here
---
ftp/README.adoc | 105 +++++++++++++++++++++++++++++++++++++++++++++
ftp/application.properties | 19 ++++++++
ftp/compose.yaml | 25 +++++++++++
ftp/ftp.camel.yaml | 12 ++++++
ftp/payload.xml | 3 ++
5 files changed, 164 insertions(+)
diff --git a/ftp/README.adoc b/ftp/README.adoc
new file mode 100644
index 0000000..34c7ce0
--- /dev/null
+++ b/ftp/README.adoc
@@ -0,0 +1,105 @@
+== ActiveMQ to FTP
+
+This example shows how to integrate ActiveMQ with FTP server.
+
+=== Running ActiveMQ and FTP server
+
+You need both an ActiveMQ Artemis broker, and FTP server up and running.
+
+You can run both via Docker Compose (or Podman)
+
+[source,sh]
+----
+$ docker compose up --detach
+----
+
+=== Install JBang
+
+First install JBang according to https://www.jbang.dev
+
+When JBang is installed then you should be able to run from a shell:
+
+[source,sh]
+----
+$ jbang --version
+----
+
+This will output the version of JBang.
+
+To run this example you can either install Camel on JBang via:
+
+[source,sh]
+----
+$ jbang app install camel@apache/camel
+----
+
+Which allows to run CamelJBang with `camel` as shown below.
+
+=== How to run
+
+Then you can run this example using:
+
+[source,sh]
+----
+$ camel run *
+----
+
+=== Sending Messages to ActiveMQ
+
+When the example is running, you need to trigger Camel, by sending messages to
the ActiveMQ broker.
+You can either do this via the broker web console http://localhost:8161 (login
with `artemis/artemis`
+or by using Camel JBang:
+
+[source,sh]
+----
+$ camel cmd send --body=file:payload.xml
+----
+
+=== Browsing FTP server
+
+When you have send some messages to ActiveMQ then Camel will route these to
the FTP server.
+To see which files has been uploaded, you can remote shell into Docker or use
Camel JBang:
+
+[source,sh]
+----
+$ camel cmd browse
+----
+
+Which shows a status page of pending messages in the systems.
+
+To see the content of these messages, you can tell Camel to dump via
+
+[source,sh]
+----
+$ camel cmd browse --dump
+----
+
+TIP: To see more options use `camel cmd browse --help`.
+
+
+=== Developer Web Console
+
+You can enable the developer console via `--console` flag as show:
+
+[source,sh]
+----
+$ camel run * --console
+----
+
+Then you can browse: http://localhost:8080/q/dev to introspect the running
Camel Application.
+
+
+=== More Information
+
+This example was also covered in the following YouTube video:
https://youtu.be/V0sBmE8rcVg
+
+
+=== Help and contributions
+
+If you hit any problem using Camel or have some feedback, then please
+https://camel.apache.org/community/support/[let us know].
+
+We also love contributors, so
+https://camel.apache.org/community/contributing/[get involved] :-)
+
+The Camel riders!
diff --git a/ftp/application.properties b/ftp/application.properties
new file mode 100644
index 0000000..73cdd56
--- /dev/null
+++ b/ftp/application.properties
@@ -0,0 +1,19 @@
+# artemis connection factory
+camel.beans.artemisCF =
#class:org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory
+# URL for broker
+camel.beans.artemisCF.brokerURL = tcp://localhost:61616
+
+# if broker requires specific login
+camel.beans.artemisCF.user = artemis
+camel.beans.artemisCF.password = artemis
+
+# pooled connection factory
+camel.beans.poolCF =
#class:org.messaginghub.pooled.jms.JmsPoolConnectionFactory
+camel.beans.poolCF.connectionFactory = #bean:artemisCF
+camel.beans.poolCF.maxSessionsPerConnection = 500
+camel.beans.poolCF.connectionIdleTimeout = 20000
+# more options can be configured
+#
https://github.com/messaginghub/pooled-jms/blob/main/pooled-jms-docs/Configuration.md
+
+# setup JMS component to use connection factory
+camel.component.jms.connection-factory = #bean:poolCF
diff --git a/ftp/compose.yaml b/ftp/compose.yaml
new file mode 100644
index 0000000..2348bfb
--- /dev/null
+++ b/ftp/compose.yaml
@@ -0,0 +1,25 @@
+services:
+
+ artemis:
+ container_name: my-artemis
+ image: apache/activemq-artemis:2.37.0
+ ports:
+ - "8161:8161"
+ - "61616:61616"
+ - "5672:5672"
+ environment:
+ ARTEMIS_USER: artemis
+ ARTEMIS_PASSWORD: artemis
+ ANONYMOUS_LOGIN: false
+
+ ftp-server:
+ container_name: my-ftp-server
+ environment:
+ - FTP_PASS=mypassword
+ - FTP_USER=myuser
+ image: garethflowers/ftp-server
+ ports:
+ - '20-21:20-21/tcp'
+ - '40000-40009:40000-40009/tcp' # Only needed for passive mode
+# volumes:
+# - '/data:/home/user'
diff --git a/ftp/ftp.camel.yaml b/ftp/ftp.camel.yaml
new file mode 100644
index 0000000..cc083b3
--- /dev/null
+++ b/ftp/ftp.camel.yaml
@@ -0,0 +1,12 @@
+- from:
+ uri: "jms:cheese"
+ steps:
+ - log: "Incoming: ${body}"
+ - to:
+ uri: ftp
+ parameters:
+ host: localhost
+ port: 21
+ username: myuser
+ password: mypassword
+ passiveMode: true
\ No newline at end of file
diff --git a/ftp/payload.xml b/ftp/payload.xml
new file mode 100644
index 0000000..a087424
--- /dev/null
+++ b/ftp/payload.xml
@@ -0,0 +1,3 @@
+<order id="123">
+ <item id="444">Camel in Action</item>
+</order>
\ No newline at end of file