As Nexus Admin I'd like to keep data (artifacts) even if Nexus was destroyed. For this I can setup 2 or more Nexus instances and pass artifacts to all of them when artifact is initially uploaded to one of them.
The plugin is going to be installed on both sending side that wants to pass an artifact and receiving side that can accept the artifact.
Given artifact is uploaded to one of the Nexus instances:
- A request is sent to Nexus-Receiver with info about artifact and repo it was placed in
- Nexus-Receiver must have a Proxy Repository configured to proxy Nexus-Sender. After Nexus-Receiver gets the request it fetches target artifact by means of Proxy Repo configured to fetch changes from Nexus-Sender.
For this a REST service is implemented with path:
service/local/artifact/maven/update
.
- Plugin can be configured using Nexus Capabilities
- In configuration it's possible to set:
- Nexus-Receiver addresses and credentials to be authorized
- A flag whether an integration for particular Nexus-Receiver is enabled. Nexus-Sender should not send updates to such integration, but must store them for future replay.
- Multiple Nexus-Receivers may be configured
- A queue of artifacts must form on Nexus-Sender side if some of Nexus-Receivers are not available (requests fail) or Nexus-Receivers are disabled in config file. The queue has to be flushed into a persistent storage (file) to keep it even if Nexus-Sender crashes.
- There must be a limit for a queue length. Default is 100K, but would be nice to configure it.
- Nexus performance in general and UI in particular must not suffer from replication. This implies that all events must be processed in an async manner both in Nexus-Sender & Nexus-Receiver.
- Logs must show errors if replication doesn't happen due to Nexus-Receiver unavailability
- An email to send warnings can be configured. Notifications must be sent when artifacts queue is 100, 500, 1000, 10K, 100K long.
Copyright 2015, Grid Dynamics International, Inc.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at Apache License, Version 2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.